其中一个主要原因是,您有一个包含许多模块、类、清单、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 args : -Xverify:none -Xquickstart -Xnoclassgc -XX:+UseNUMA -XtlhPrefetch -Xgcthreads4 (我在我的机器上安装了 4 个虚拟处理器)
- 扩展堆大小以满足应用程序的需求。
- 禁用应用程序的自动启动以减少发布时间。
- 禁用 PMI 和不必要的跟踪。
- 在启动期间分析应用程序,并修复瓶颈(如果发现)。
其他可能获得性能的 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:+使用数字