Jay*_*Jay 22 java performance websphere java-ee
我正在使用带有集成测试环境的Rational Application Developer v7.0.当我调试我的webapp时,调试模式下的服务器启动时间接近5-6分钟 - 足够的时间休息一下!
有时,我很生气,因为我开始诅咒IBM构建操作系统而不是应用服务器!产生20多个流程和无用的服务,没有记录的配置来调整它,以更快的速度启动.
我相信有很多java开发人员会同意我的意见.我试图通过我的管理控制台禁用默认应用程序和一组服务,但这没有多大帮助.
我没有web服务,没有企业bean,没有队列,只是一个需要连接池的简单Web应用程序.你有没有做过一些事情来制作你的集成测试环境,在调试模式下快速启动并在那里消耗更少的RAM?
更新:我尝试禁用一些服务(国际化,默认应用程序等......),现在WebSphere服务器变得越来越糟糕.它不仅不需要可怕的启动时间,它会不时地冻结长达2分钟.:-(听起来,优化并不是一件好事,总是!
调试服务器代码的最佳方法是使用远程调试.
首先,您需要将以下内容添加到服务器启动脚本中的JVM参数:
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
Run Code Online (Sandbox Code Playgroud)
这将导致JVM侦听指定的端口,然后从IDE启动针对该端口的远程调试会话并进行调试,就像代码在同一进程中运行一样.
以这种方式工作可以防止您频繁地重新启动服务器,从而在Websphere的启动时间内解决您的问题.
如果服务器上的二进制文件和IDE中的源不同步,你可以获得一些奇怪的结果,但总的来说这不是问题.
其中一个主要原因是您拥有一个包含许多模块,类,清单,XML描述符的大型应用程序,以及Websphere应用程序服务器启动过程本身就是单线程的事实(因此每个应用程序可以单独启动线程,如果他们有相同的权重).另一个原因是Eclipse EMF和JST框架在启动和发布/部署期间非常I/O密集.
启动繁琐的另一个原因是在发布/部署期间将发生的注释扫描.可以以各种方式控制和修改该注释扫描.看看这个网站:http: //wasdynacache.blogspot.se/2012/05/how-to-speed-up-annotation-processing.html
首先,检查和评估您的硬件,包括CPU,内存和HDD.您的处理器在启动期间长时间运行100%吗?如果是这样,处理器可能太弱.是否发生分页?那么你可能需要增加一些RAM.Websphere/eclipse JST和EMF框架非常强大I/O,因此您应该考虑投资SSD光盘.您还应该确保计算机上的其他进程(病毒防护软件等)不会从Websphere Java进程中窃取硬件资源.
所以对于硬件:1.处理器 - 一个相当快的处理器,因为发布和启动大多是单线程的,你不需要那么多的cpu内核2.内存 - 你至少需要512Mb的物理RAM,这取决于大小你当然的应用程序.3.存储 - 我肯定会选择快速SSD,因为底层的eclipse框架是I/O密集型的.
以下是一些减少启动阶段占用空间的技巧.请在应用这些设置之前确保记录基线启动,以便您可以观察启动的差异,即减少启动时间.
其他可能获得性能的JVM参数:
Jvm参数将使Websphere应用程序服务器立即停止:
Web容器属性:
可以指定的JVM参数eclipse.ini(注意堆参数是根据我的环境条件配置的)
5到6分钟是不正常的.我每天都使用RAD和WAS,并获得不错的启动时间.您运行的是哪个版本的WAS以及您拥有多少RAM?
如果为同一WAS配置文件共享多个工作空间和项目,请考虑为工作空间创建新的WAS配置文件.
你可能试过了,但这里有一个简单的清单,可以直接尝试.确保RAD中的服务器设置启用了以下选项:
如果您不需要,请取消选中"启用通用测试客户端".
在管理控制台中,您可以验证某些服务器设置,例如
您还可以在创建新的WAS配置文件时卸载默认安装的ivt应用程序.然后通常的事情,如不太碎片的驱动器和正确设置的页面文件大小.
您可能已经知道的最后一件事,重新发布到您的服务器而不是重新启动它.
这就是Spring诞生的原因之一.
你甚至不需要提供像JMS,远程处理等所有的细节.你最好使用Tomcat,ActiveMQ和OpenEJB.
除了WebSphere之外的 任何东西