我正在使用带有集成测试环境的Rational Application Developer v7.0。当我调试我的webapp时,调试模式下的服务器启动时间接近5-6分钟 - 足够的时间休息一下!
有时,我很生气,因为我开始诅咒IBM构建操作系统而不是app服务器!产生20多个流程和无用的服务,没有记录的配置来调整它,以更快的速度启动。
我相信有很多java开发人员会同意我的意见。我试图通过我的管理控制台禁用默认应用程序和一组服务,但这没有多大帮助。
我没有web服务,没有企业bean,没有队列,只是一个需要连接池的简单Web应用程序。你有没有做过一些事情来制作你的集成测试环境,在调试模式下快速启动并在那里消耗更少的RAM?
更新: 我尝试禁用一些服务(国际化,默认应用程序等......),现在WebSphere服务器变得越来越糟糕。它不仅不需要可怕的启动时间,它会不时地冻结长达2分钟。 :-(听起来,优化不是一件好事,总是!
答案 0 :(得分:8)
调试服务器代码的最佳方法是使用远程调试。
首先,您需要将以下内容添加到服务器启动脚本中的JVM参数:
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
这将导致JVM侦听指定的端口,然后从IDE启动针对该端口的远程调试会话并进行调试,就像代码在同一进程中运行一样。
以这种方式工作会阻止您频繁地重新启动服务器,从而在Websphere的启动时间内解决您的问题。
如果服务器上的二进制文件和IDE中的源代码不同步,你会得到一些奇怪的结果,但总的来说这不是问题。
答案 1 :(得分:7)
主要原因之一是您拥有一个包含许多模块,类,清单,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参数:
将使Websphere应用程序服务器立即停止的Jvm参数:
Webcontainer属性:
可以指定的JVM参数eclipse.ini(注意堆参数是根据我的环境条件配置的)
答案 2 :(得分:6)
5到6分钟是不正常的。我每天都使用RAD和WAS,并获得不错的启动时间。你运行的是什么版本的WAS以及你有多少RAM?
如果您为同一WAS配置文件共享多个工作区和项目,请考虑为工作区创建新的WAS配置文件。
你可能已经尝试过,但这里有一个简单的清单,可以直接尝试。确保RAD中的服务器设置启用了以下选项:
如果您不需要,请取消选中“启用通用测试客户端”。
在管理控制台中,您可以验证某些服务器设置,例如
您还可以在创建新的WAS配置文件时卸载默认安装的ivt应用。然后通常的事情,如不太碎片的驱动器和正确设置的页面文件大小。
您可能已经知道的最后一件事,重新发布到您的服务器而不是重新启动它。
答案 3 :(得分:5)
这就是春天出生的原因之一。
你甚至不必提供像JMS,远程处理等所有的细节。你最好使用Tomcat,ActiveMQ和OpenEJB。
任何但是WebSphere。
答案 4 :(得分:4)
有一些提示和提示可以帮助调整RAD 6 on developerworks,其中许多也适用于RAD 7。
我已经看到RAD 7的类似列表,如果我能找到它,我会发布它。
我找到了一些tuning tips for Portal on RAD 7。
我想说我对测试环境的经验不是最理想的。我现在倾向于使用为remote debugging with an External launch configuration配置的Tomcat / Pluto从裸Eclipse中管理它,并依赖于具有适当的JNDI配置来抽象底层服务器。
如果您正在编写相关的API,那么出于开发目的,您不应该在Websphere上进行编码。如果你确实有一个特定于Webpshere的问题,你总是可以调动它来调试它。
答案 5 :(得分:3)
如果您没有EJB,没有JMS等,只需在Tomcat或Jetty等独立的servlet容器下部署,您会惊讶地发现它有多快:-),这里具有讽刺意味但是这是真的!
答案 6 :(得分:1)
如果连接池确实是您使用的唯一appserver功能,那么为什么不简单地使用apache commons dbcp(http://commons.apache.org/dbcp/)完全删除webfear并使用jetty。这应该会将您的启动时间减少到大约5秒。如果您真的觉得有必要,可以稍后再次为生产环境轻松切换到websphere。
答案 7 :(得分:1)
WAS V7通过允许您配置应用服务器启动时启动的内容来解决其中一些问题。
因此,如果您迁移到WAS V7,您可能会在此空间中进行一些改进。