Java Websphere Application Server—启动任何fast究竟需要什么?

Java Websphere Application Server—启动任何fast究竟需要什么?,java,performance,jakarta-ee,websphere,Java,Performance,Jakarta Ee,Websphere,我使用的是RationalApplicationDeveloperV7.0,它附带了一个集成测试环境。当我开始调试我的webapp时,调试模式下的服务器启动时间接近5-6分钟——足够休息一下了 有时,这让我非常恼火,以至于我开始诅咒IBM构建了一个操作系统而不是应用服务器!产生20多个进程和无用的服务,没有文档化的配置来调整它,更快地启动它 我相信有很多java开发人员会同意我的观点。我试图通过我的管理控制台禁用默认的应用程序和一组服务,但是这没有多大帮助 我没有web服务,没有企业bean,没

我使用的是RationalApplicationDeveloperV7.0,它附带了一个集成测试环境。当我开始调试我的webapp时,调试模式下的服务器启动时间接近5-6分钟——足够休息一下了

有时,这让我非常恼火,以至于我开始诅咒IBM构建了一个操作系统而不是应用服务器!产生20多个进程和无用的服务,没有文档化的配置来调整它,更快地启动它

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

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

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

如果连接池确实是您使用的唯一appserver功能,那么为什么不直接使用apache commons dbcp()将webfear全部删除,改用jetty。这会将启动时间减少到5秒左右。如果您确实觉得有必要,您可以稍后轻松地再次切换到websphere以用于生产环境。

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

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

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
这将导致JVM在指定的端口上侦听,然后从IDE启动针对该端口的远程调试会话,并像在同一进程中运行代码一样进行调试

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


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

有一些关于调优的提示和技巧可能会有所帮助,其中许多也适用于RAD 7

我已经看到了RAD7的类似列表,如果我能找到,我会发布它

我确实找到了一些

我想说的是,我在测试环境方面的经验不太理想。我现在倾向于使用配置为的Tomcat/Pluto从裸Eclipse中管理它,并依赖于具有适当的JNDI配置来抽象底层服务器


如果您是按照相关API进行编码,那么您不在Websphere上对于开发目的来说应该无关紧要。如果您确实有Webpshere特定问题,您可以随时启动beast进行调试。

5到6分钟是不正常的。我每天都使用RAD和WAS,启动时间也不错。您正在运行的是哪个版本的WAS,以及RAM有多少你有吗

如果您为同一个配置文件共享几个工作区和项目,请考虑为工作区创建一个新的“配置文件”。

您可能尝试过,但这里有一个简单的检查列表,列出了第一手要尝试的内容。请确保您在RAD中的服务器设置启用了以下选项:

  • 优化服务器以进行测试和开发
  • 使用工作区上的资源运行服务器
  • 最小化复制到服务器的应用程序文件
如果不需要,请取消选中“启用通用测试客户端”

在管理控制台中,您可以验证一些服务器设置,例如

  • 以开发模式运行
  • 并联起动
  • 根据需要启动组件
您还可以卸载在创建新WAS配置文件时默认安装的ivt应用程序。然后卸载通常的应用程序,例如不太分散的驱动器和正确设置的页面文件大小


您可能已经知道的最后一件事是,重新发布到您的服务器,而不是重新启动它。

如果您没有EJB,没有JMS等,只需部署在独立的servlet容器(如Tomcat或Jetty)下,您会惊讶它的速度有多快:-),这很讽刺,但这是真的

这就是春天诞生的原因之一

您甚至不必提供JMS、远程处理等所有细节。使用Tomcat、ActiveMQ和OpenEJB会更好


除了WebSphere之外的任何东西

WASV7允许您配置应用服务器启动时启动的内容,从而解决了其中一些问题


因此,如果您迁移到WASV7,您可能会在这方面有所改进。

主要原因之一是您有一个大型应用程序,其中包含许多模块、类、清单、XML描述符等,而且事实上WebSphereApplicationServer启动过程本身就是单线程的(因此,如果每个应用程序具有相同的权重,则可以在单独的线程中启动它们)。另一个原因是Eclipse EMF和JST框架在启动和发布/部署期间非常需要I/O

启动繁琐的另一个原因是在发布/部署期间进行的批注扫描。可以通过多种方式控制和修改此批注扫描。请查看此网站:

首先,检查和评估你的硬件,CPU、内存和HDD。你的处理器/处理器在启动过程中长时间运行100%吗?如果是这样,处理器可能会太弱。发生分页了吗?那么你可能需要投入更多的RAM。WebSphere /Eclipse JST和EMF框架是非常I/O强的,所以你应该考虑投资于SS。您还应该确保机器上的其他进程(病毒防护软件等)不会从Websphere java进程窃取硬件资源

因此,对于硬件: 1.处理者-公共关系