Websphere Application Server - 快速启动到底需要什么?

2022-09-01 23:03:40

我使用的是 Rational Application Developer v7.0,它附带了一个集成的测试环境。当我开始调试我的webapp时,调试模式下的服务器启动时间接近5-6分钟 - 有足够的时间喝杯咖啡休息一下!

有时,它如此惹恼我,以至于我开始诅咒IBM构建操作系统而不是应用程序服务器!生成20多个进程和无用的服务,没有记录的配置来调整它,以更快地启动。

我相信有很多java开发人员会同意我的观点。我尝试通过管理控制台停用默认应用和一组服务,但这并没有多大帮助。

我没有Web服务,没有企业Bean,没有队列,只有一个需要连接池的简单Web应用程序。您过去是否做过一些事情来使您的集成测试环境在调试模式下快速启动,并且消耗更少的RAM?

更新:我尝试禁用一些服务(国际化,默认应用程序等),现在WebSphere服务器变得越来越糟糕。它不仅不需要可怕的启动时间,而且时不时地冻结长达2分钟。:-(听起来,优化不是一件好事,总是如此!


答案 1

调试服务器代码的最佳方法是使用远程调试。

首先,您需要将以下内容添加到服务器启动脚本中的 JVM 参数中:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

这将导致 JVM 侦听指定的端口,然后从 IDE 中,您可以针对该端口启动远程调试会话并进行调试,就像代码在同一进程中运行一样。

以这种方式工作可以防止您如此频繁地重新启动服务器,从而避免Websphere的启动时间问题。

如果服务器上的二进制文件与 IDE 中的源代码不同步,您可能会得到一些奇怪的结果,但总的来说,这不是问题。


答案 2

其中一个主要原因是,您有一个包含许多模块、类、清单、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密集型的。

以下是减少启动阶段占用空间的一些技巧。在应用这些设置之前,请确保记录基线启动,以便您可以观察启动的差异,即缩短的启动时间。

  1. JVM args : -Xverify:none -Xquickstart -Xnoclassgc -XX:+UseNUMA -XtlhPrefetch -Xgcthreads4 (我在我的机器上安装了 4 个虚拟处理器)
  2. 扩展堆大小以满足应用程序的需求。
  3. 禁用应用程序的自动启动以减少发布时间。
  4. 禁用 PMI 和不必要的跟踪。
  5. 在启动期间分析应用程序,并修复瓶颈(如果发现)。

其他可能获得性能的 JVM 参数:

  • com.ibm.cacheLocalHost=true
  • com.ibm.ws.classloader.zipFileCacheSize=512
  • com.ibm.ws.classloader.resourceRequestCacheSize=1024
  • com.ibm.ws.management.event.pull_notification_timeout =20000
  • com.ibm.ws.amm.scan.context.filter.packages=true
  • org.eclipse.jst.j2ee.commonarchivecore.disableZip=true

使 Websphere 应用程序服务器立即停止的 Jvm 参数:

  • com.ibm.ejs.sm.server.quiesceTimeout=0
  • com.ibm.ejs.sm.server.quiesceInactiveRequestTime=1000

网络容器属性:

  • com.ibm.wsspi.jsp.disableTldSearch=true
  • com.ibm.wsspi.jsp.disableResourceInjection=true

可以指定 eclipse 的 JVM 参数.ini(请注意,堆参数是根据我的环境条件配置的)

  • -Dcom.ibm.ws.management.event.max_polling_interval=5000
  • -Xquickstart
  • -Xverify:无
  • -Xmxcl25000
  • -Xjit:dataTotal=65536
  • -Xcodecache64m
  • -Xscmx48m
  • -Xnolinenumbers
  • -Xverify:无
  • -Xmnx64m
  • -Xmx1446m
  • -Xmnx64m
  • -XX:+使用压缩的Oops
  • -XX:+使用数字

推荐