在我的工作中,我们使用Weblogic Server来托管企业门户。哪个没问题。
然而,我最近有机会使用Tomcat进行一些项目,我对速度上令人难以置信的差异感到震惊。 Tomcat启动需要3-5秒,部署中型项目需要10-15秒。 Wewblogic需要3-5 分钟才能启动,最多需要10 分钟才能部署。这会杀死任何迭代开发。
我是否会不得不让自己感到缓慢和臃肿,或者我还能做些什么来加快速度?有人有这方面的经验吗?
答案 0 :(得分:18)
你将无法将青蛙变成公主。我想稍微想一下weblogic的启动时间 - 它们看起来有点过分,你是不是有机会在linux上运行?
如果您正在运行嵌套档案(耳朵内的战争等)以及目录扫描技术(休眠,弹簧等),您可以尝试在部署之前将其全部解压缩到相应的爆炸结构;众所周知,它有所帮助。
Tomcat包含weblogic所具有的一小部分功能。我们在jetty上开发,但在weblogic上部署接受/生产环境,这非常有效。你可以用tomcat做同样的事情。
Tomcat是一个相当严格的容器,而weblogic是宽松的,所以你通常只会遇到很小的麻烦部署到weblogic,特别是只要你连续两次都这样做。
您还可以使用像javarebel这样的工具来进行真正漂亮的热部署,并避免所有重启。
答案 1 :(得分:6)
正如krosenvold所说,随机数生成会导致启动缓慢。
Oracle的建议是使用下面的-D标志之一 - 仅在非生产系统上,因为它会降低安全性。
将 -Djava.security.egd = file:/// dev / urandom 开关或文件:/ 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/
答案 2 :(得分:4)
你没有提到什么级别和什么平台,但WebLogic Server Performance and Tuning guide包含一些可能对你有所帮助的提示和技巧。
答案 3 :(得分:2)
根据您的设置,您可以编辑/etc/resolv.conf并注释掉nameserver行。这可以将WebLogic的启动时间从20分钟缩短到不到1分钟。
答案 4 :(得分:2)
在内存消耗问题上,您可能希望尝试设置WebLogic服务器使用的JVM的内存参数。登录到您的WL Web管理控制台并转到环境/服务器/ [您的服务器] /配置/服务器启动,在“参数”上,设置类似-Xms256m -Xmx256m的设置将设置您的JVM的初始(Xms)和最大值( Xmx)堆大小为256兆字节。您将需要使用这些数字并找到适合您环境的最佳值。但请注意,您的Eclipse实例可能也会占用大量内存。
关于启动时间,虽然比我预期的要大一点,但看起来还不错。这个问题非常频繁,我认为你无法解决它。 WebLogic具有比Tomcat更多的功能,这反映了环境的其他特征(如启动时间)。
原来,Weblogic在启动时使用随机数生成器。由于java中的错误,它从/ dev / random读取“randomness”。 / dev / random是非常好的随机数生成器,但它非常慢。生成一个数字有时需要10分钟或更长时间。 / dev / urandom不是那么好,但它是即时的。 Java以某种方式将/ dev / urandom文件映射到/ dev / random。这就是$ JAVA_HOME / jre / lib / security / java.security中的默认设置无用的原因。
可能的解决方案: 1)将“-Djava.security.egd = file:/ dev /./ urandom”(/ dev / urandom不起作用)添加到java参数。
更糟糕但工作解决方案是: 2)mv / dev / random /dev/random.ORIG; ln / dev / urandom / dev / random
3)最佳解决方案是更改$ JAVA_HOME / jre / lib / security / java.security 用
替换securerandom.sourcesecurerandom.source =文件是:/ dev /./ urandom的
这个问题不会发生在Windows下,因为它使用了不同的/ dev / random实现。
现在启动weblogic服务器需要几秒钟。
答案 5 :(得分:1)
如果你使用Weblogic研讨会,那么你只需要发布,而不是在进行迭代开发时重启应用服务器。
答案 6 :(得分: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秒。
答案 7 :(得分:0)
请检查漫长的启动时间是否实际上是由于WebLogic Server启动而不是WebLogic Portal启动时间。