在我的工作中,我们使用Weblogic服务器来托管企业门户。这还可以。
然而,最近我有机会在一些副项目中使用Tomcat,并且我对于速度上的巨大差异感到震惊。Tomcat需要3-5秒才能启动,并且需要10-15秒来部署一个中等大小的项目。而Weblogic需要3-5分钟才能启动,并且需要长达10分钟的时间来部署。这使得任何迭代开发都很困难。
我是否必须接受它缓慢和臃肿的现实,或者有什么办法可以加快它的速度?有没有人有这方面的经验?
在我的工作中,我们使用Weblogic服务器来托管企业门户。这还可以。
然而,最近我有机会在一些副项目中使用Tomcat,并且我对于速度上的巨大差异感到震惊。Tomcat需要3-5秒才能启动,并且需要10-15秒来部署一个中等大小的项目。而Weblogic需要3-5分钟才能启动,并且需要长达10分钟的时间来部署。这使得任何迭代开发都很困难。
我是否必须接受它缓慢和臃肿的现实,或者有什么办法可以加快它的速度?有没有人有这方面的经验?
如果WebLogic连接到数据库,而您没有正确设置DNS,则在Linux上启动速度也可能很慢。
根据您的设置,您可以编辑 /etc/resolv.conf 文件并注释掉 nameserver 行。这可以将 WebLogic 的启动时间从 20 分钟减少到不到一分钟。
正如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秒。
有一个很棒的代码示例,你可以在普通的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