【问题标题】:Speed up Weblogic Server startup times加快 Weblogic Server 启动时间
【发布时间】:2010-10-06 18:02:24
【问题描述】:

在我的工作中,我们使用 Weblogic Server 来托管企业门户。这很好。

但是,我最近有机会在一些附带项目中使用 Tomcat,我对速度上的惊人差异感到震惊。 Tomcat 启动需要 3-5 秒,部署一个中型项目需要 10-15 秒。 Webblogic 启动需要 3-5 分钟,部署最多需要 10 分钟。这会扼杀任何迭代开发。

我是否将不得不接受它的缓慢和臃肿,或者我可以做些什么来加快它的速度?有人有这方面的经验吗?

【问题讨论】:

  • 3-5 分钟,!?好难过

标签: tomcat performance weblogic application-server


【解决方案1】:

正如 Tomas F 和 krosenvold 建议的那样,它可能用于随机数生成器。

在 Weblogic 12.2.1 的标准启动中,我收到了这条消息:

Disabling the CryptoJ JCE Provider self-integrity check for better startup performance. 
To enable this check, specify -Dweblogic.security.allowCryptoJDefaultJCEVerification=true

所以我指定了它,它把启动时间缩短了一半。在干净的域上大约需要 13 秒。

【讨论】:

  • 它禁用它以获得更好的性能,对吗?怎么启用它减少了时间!!
【解决方案2】:

关于内存消耗问题,您可能想尝试设置 WebLogic 服务器使用的 JVM 的内存参数。登录到您的 WL Web 管理控制台并转到 Environment/Servers/[your server]/Configuration/Server Start 并在“参数”上设置 -Xms256m -Xmx256m 之类的设置将设置 JVM 的初始 (Xms) 和最大值 ( Xmx) 堆大小为 256 兆字节。您将希望使用这些数字并为您的环境找到最佳值。但请注意,您的 Eclipse 实例也可能会消耗大量内存。

关于启动时间,虽然比我预期的要大一些,但它们看起来还不错。这个问题非常频繁,我不认为你一定能解决它。 WebLogic 比 Tomcat 有更多的功能,这反映在环境的其他特征(如启动时间)上。

原来 Weblogic 在启动期间使用随机数生成器。由于 java 中的错误,它从 /dev/random 读取“随机性”。 /dev/random 是非常好的随机数生成器,但速度极慢。有时需要 10 分钟或更长时间才能生成一个数字。 /dev/urandom 不是很好,但它是即时的。 Java 以某种方式将 /dev/urandom 文件映射到 /dev/random。这就是为什么 $JAVA_HOME/jre/lib/security/java.security 中的默认设置没有用的原因。

可能的解决方案: 1)java参数中添加“-Djava.security.egd=file:/dev/./urandom”(/dev/urandom不行)。

更糟糕但可行的解决方案是: 2) mv /dev/random /dev/random.ORIG ; ln /dev/urandom /dev/random

3) 最好的解决方案是更改 $JAVA_HOME/jre/lib/security/java.security 将securerandom.source替换为

securerandom.source=file:/dev/./urandom

这个问题在windows下不会发生,因为它使用了不同的/dev/random实现。

现在启动 weblogic 服务器需要几秒钟。

【讨论】:

    【解决方案3】:

    如果 WebLogic 连接到数据库并且您没有正确设置 DNS,则它在 Linux 上的启动也会很慢。

    根据您的设置,您可以编辑 /etc/resolv.conf 并注释掉名称服务器行。这可以将 WebLogic 的启动时间从 20 分钟缩短到不到一分钟。

    【讨论】:

      【解决方案4】:

      请检查冗长的启动时间实际上是由于 WebLogic Server 启动而不是 WebLogic Portal 启动时间造成的。

      【讨论】:

        【解决方案5】:

        你不能把青蛙变成公主。我对 weblogic 的那些启动时间有点好奇——它们似乎有点过分,你不是在 linux 上运行吗?

        如果您正在运行嵌套存档(耳朵内的战争等)以及目录扫描技术(hibernate、spring 等),您可以尝试在部署之前将其全部解压到相应的分解结构;众所周知,它会有所帮助。

        Tomcat 包含 weblogic 的一小部分功能。我们在 jetty 上开发,但部署在 weblogic 上以用于验收/生产环境,这工作得相当好。你可以用tomcat做同样的事情。

        Tomcat 是一个相当严格的容器,而 weblogic 是宽松的,因此部署到 weblogic 时通常只会遇到一些小麻烦,尤其是只要你不断地同时执行这两个操作。

        您还可以使用javarebel 之类的工具来进行非常漂亮的热部署并避免所有这些重新启动。

        【讨论】:

        • 有趣。我肯定会关注 javarebel。不幸的是,我无法部署到 Tomcat 或 Jetty 进行开发......我们正在运行 Weblogic Portal,不幸的是,它非常依赖于 BEA 生态系统的其余部分,没有它似乎会窒息。
        • 你在 linux 上运行 weblogic 吗? linux 上的随机数生成有一个非常模糊的问题,导致 weblogic 的启动时间非常慢。如果是这样,我可以挖掘解决方案。
        【解决方案6】:

        如果你使用Weblogic Workshop,那么你只需要发布,而不是在进行迭代开发时重启应用服务器。

        【讨论】:

          【解决方案7】:

          正如 krosenvold 所说,随机数生成会导致启动缓慢。

          Oracle 的建议是使用以下 -D 标志之一 - 仅在非生产系统上使用,因为它会降低安全性。

          使用 -Djava.security.egd=file:///dev/urandom 开关或 file:/dev/./urandom 到启动 weblogic 的命令。

          以上信息取自http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14772/weblogic_server_issues.htm#CIHIIBGJ

          如果 -D 标志不起作用,请查看以下解决方案: http://www.itonguard.com/20090313/weblogic-starts-slow/

          【讨论】:

            【解决方案8】:

            您没有提到什么级别和什么平台,但WebLogic Server Performance and Tuning guide 包含许多可能对您有所帮助的提示和技巧。

            【讨论】:

              猜你喜欢
              • 2015-03-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多