tomcat 加快Weblogic Server的启动速度

vwoqyblh  于 2022-11-13  发布在  其他
关注(0)|答案(8)|浏览(159)

在我的工作中,我们使用Weblogic Server来托管企业门户。这很好。
然而,我最近有机会使用Tomcat来做一些辅助项目,我被速度上的惊人差异所震撼。Tomcat启动需要3-5秒,部署一个中型项目需要10-15秒。Webblogic启动需要3-5 * 分钟 *,部署需要10 * 分钟 *。这扼杀了任何迭代开发。
我是要让自己屈服于它的缓慢和臃肿,还是有什么我可以做的来加快它?有人有经验吗?

af7jpaap

af7jpaap1#

你不可能把青蛙变成公主。我想知道weblogic的启动时间a-它们看起来有点长,你不是碰巧在linux上运行吧?
如果你正在运行嵌套的存档(wars within ear等)和目录扫描技术(hib、spring等),你可以在部署之前尝试将其全部解包到相应的分解结构中;它已经被认为是有点帮助。
Tomcat只包含了weblogic的一小部分特性,我们在jetty上开发,但在weblogic上部署,用于验收/生产环境,效果相当不错。你也可以用Tomcat做同样的事情。
Tomcat是一个相当严格的容器,而weblogic则比较宽松,所以通常情况下,部署到weblogic上只会遇到一些小问题,特别是当您连续地同时部署到这两个容器时。
您还可以使用javarebel之类的工具来执行非常漂亮的热部署,并避免所有这些重新启动。

xzv2uavs

xzv2uavs2#

正如krosenvold所说,随机数生成会导致启动缓慢。
Oracle建议仅在非生产系统上使用下面的-D标志之一,因为它会降低安全性。
在启动weblogic的命令中使用**-Djava.security.egd=文件:///dev/urandom开关或文件:/dev/./urandom**。
以上信息摘自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/

scyqe7ek

scyqe7ek3#

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

fcwjkofz

fcwjkofz4#

如果WebLogic正在连接到数据库,而您尚未正确设置DNS,则在Linux上启动WebLogic也会很慢。
根据您的设置,您可能可以编辑/etc/resolv.conf并注解掉名称服务器行。这可以将WebLogic的启动时间从20分钟减少到不到一分钟。

whlutmcx

whlutmcx5#

在内存消耗问题上,您可能希望尝试设置WebLogic服务器使用的JVM的内存参数。登录到WL Web管理控制台,转到Environment/Servers/[您的服务器]/Configuration/Server Start,在“参数”中,设置类似于-Xms 256 m-Xmx 256 m的内容将设置JVM的初始(Xms)和最大值(Xmx)堆大小设置为256兆字节。您可能希望根据这些数字来查找适合您的环境的最佳值。但是请注意,您的Eclipse示例可能也会消耗大量内存。
关于启动时间,虽然比我预期的要长一点,但看起来还可以。这个问题非常频繁,我不认为你一定能解决它。WebLogic比Tomcat有更多的特性,这反映在环境的其他特性上(比如启动时间)。
结果发现Weblogic在启动时使用了随机数生成器。由于java中的bug,它从/dev/random读取“randomity”。/dev/random是非常好的随机数生成器,但它非常慢。有时需要10分钟或更长时间来生成一个数字。/dev/urandom不是那么好,但它是即时的。Java不知何故将/dev/urandom文件Map到/dev/random。这就是为什么$JAVA_HOME/jre/lib/security/ www.example.com中的默认设置java.security是无用的。
可能的解决方案:1)将“-Djava.security.egd=file:/dev/./urandom”(/dev/urandom无法正常工作)添加到java参数中。
更糟但可行的解决办法是:2)mv /dev/随机/dev/随机.原始; ln /dev/随机/dev/随机
3)最好的解决方案是将$JAVA_HOME/jre/lib/security/ www.example.com替换java.security为
/dev/./urandom文件中的文件名为
在Windows下不会发生此问题,因为它使用了不同的/dev/random实现。
现在启动weblogic服务器需要几秒钟。

guykilcj

guykilcj6#

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

uoifb46i

uoifb46i7#

请检查启动时间过长是否确实是由于WebLogic Server启动而不是WebLogic Portal启动时间造成的。

c9qzyr3d

c9qzyr3d8#

正如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秒。
有一个great code example,您可以在那里用普通的Java自己尝试一下。

public class JavaSecurityEgdTester {
    public static final double NANOSECS = 1000000000.0;

    public static void main(String[] args) {
        SecureRandom secureRandom = new SecureRandom();
        long start = System.nanoTime();
        byte[] randomBytes = new byte[256];
        secureRandom.nextBytes(randomBytes);
        double duration = (System.nanoTime() - start) / NANOSECS;

        System.out.println("java.security.egd = " + System.getProperty("java.security.egd") + " took " + duration + " seconds and used the " + secureRandom.getAlgorithm() + " algorithm");
    }
}

执行

java -Djava.security.egd=file:/dev/random -cp JavaSecurityEgdTester

java -Djava.security.egd=file:/dev/urandom -cp . JavaSecurityEgdTester

相关问题