在生产环境中运行Tomcat

Koe*_*box 13 java performance tomcat cluster-computing

我目前正在使用Tomcat6作为开发和生产的Web容器.

我听说Tomcat不是生产环境中性能最佳的Web容器.这是真的?

Tomcat在性能和内存管理方面是否足以在生产环境中使用?

我们的系统拥有大约100到400个用户.

对我来说,更多的是关于如何编写Web应用程序以及Web应用程序内部的操作类型.

即使性能在一个Tomcat实例上存在问题,是否可以集群Tomcat?

谢谢.

Dan*_*iar 14

我目前正在使用Tomcat6作为开发和生产的Web容器.

我听说Tomcat不是生产环境中性能最佳的Web容器.这是真的?

那么,这又取决于你怎么看.Tomcat可以很好地运行,并且在生产中随处可用,拥有最大的用户群.一些商业应用程序服务器甚至没有告诉您使用Tomcat.

当然,您不应该将Tomcat开箱即用的性能与经过良好调整的Web容器进行比较.可以调整Tomcat以获得比其开箱即用状态更好的性能.你可以谷歌:"tomcat生产",例如,看看人们如何在实际生产中管理它,并得到很多建议,提示等.

Tomcat在性能和内存管理方面是否足以在生产环境中使用?

是的.当您需要更多时,有很多供应商提供Tomcat的商业版本,包括监控和检测,以帮助您将应用程序维护在生产中.

我们的系统拥有大约100到400个用户.

Tomcat可以肯定地处理更多.取决于您的应用程序/系统的性质,您可能需要多个Tomcat实例.在真实的生产环境中,集中Tomcat是明智之举.

对我来说,更多的是关于如何编写Web应用程序以及Web应用程序内部的操作类型.

半真半假.

我相信,当您要集群Tomcat时,良好的架构和框架也将为您节省大量时间.因此,在决定如何放置框架堆栈之前,您需要具备有关Web容器应用程序如何工作,框架如何处理集群环境中的内容以及如何进行集群的一般知识.

例如,问题可能来自:

  • 在多个JVM实例的内存缓存中
  • 会话存储(内存,数据库,文件存储)及其复制

集群Tomcat不是一项简单的任务,如果不正确地放置您的框架,将很难在以后合并集群Tomcat.

即使性能在一个Tomcat实例上存在问题,是否可以集群Tomcat?

是的,可以集群Tomcat.您设计应用程序的方式决定了您的应用程序是否可以轻松地进行群集,或者群集更复杂.此问题可能不是特定于Tomcat,而是特定于应用程序服务器.

您可能需要考虑的一些问题:

  • 您在(HTTP)会话中存储的数据
  • 存储会话的位置
  • 保持活力
  • 使用Web服务器应用程序负载平衡反向代理,例如Apache Web Server + mod_proxy/mod_jk,nginx,Varnish
  • 哪个Tomcat连接器可以使用(阻止IO,NIO,APR)

还有一些其他问题,但我认为你可以从这开始.


小智 6

100-400用户是一个相对较小的部署.我帮助客户部署Tomcat解决方案,拥有更大的注册用户群(数百万)或并发用户.我甚至不相信您的部署需要群集.

集群Tomcat服务器非常简单.将负载均衡器放在Tomcat服务器的前面.使用会话粘性配置负载均衡器.你会有一个非常好的Tomcat集群.如果一个Tomcat实例失败并且用户可以自动路由到第二个实例而不丢失会话数据,则某些客户端需要会话故障转移.我认为这对你的部署来说是过度杀戮.实际上,定期维护导致的停机时间远远高于系统故障.我有Tomcat服务器运行了几个月,只需要关闭主要的代码版本.但是在需要的情况下,有开源包支持会话群集.

说到这一点,大多数J2EE应用程序性能问题都源于应用程序本身而不是Tomcat服务器.以下是我在解决客户端系统性能问题时遇到的最常见的J2EE应用程序性能问题.希望这有帮助.