2010-11-15 145 views
11

我目前使用Tomcat6作为开发和生产的Web容器。在生产环境中运行Tomcat

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

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

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

对我来说,更多关于如何编写Web-App和Web-App内部的操作类型。

即使性能在一个Tomcat实例上出现问题,是否可以对Tomcat进行集群?

谢谢。

+2

“聚类”是什么意思?这是一个有多种解释的术语。 – skaffman 2010-11-15 08:52:49

+2

这个问题会更适合ServerFault,因为它是关于sysadmin而不是编程(至少据我了解)。 – 2010-11-15 08:52:58

+0

可能您需要查看反向代理。尽管tomcat足够好,但是如果你想扩展你的应用程序,那么尽管你使用的是任何容器,但如果你每天处理Tomcat或其他Java应用程序服务器,那么你需要使用负载平衡 – vinothkr 2010-11-15 09:19:27

回答

14

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

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

那么,这又取决于你如何看待它。 Tomcat可以表现得非常好,并且在生产中随处可见,拥有最大的用户群。一些商业应用程序服务器甚至在不告诉你的情况下使用Tomcat。

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

是Tomcat的足够的性能和内存管理对生产中使用的术语环境?

是的。当你需要更多的时候,有很多供应商提供商业版本的Tomcat,包括监控和仪器,以帮助维护你的应用程序的生产。

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

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

对我来说,更多的是关于如何编写Web-App以及Web-App内部的操作类型。

一半的事实。

我相信,当您即将集群Tomcat时,良好的架构和框架将为您节省大量时间。因此,在决定如何放置框架堆栈之前,您需要掌握Web容器应用程序的工作方式,集群如何处理集群环境中的事情以及集群如何聚集的一般知识。

  • 在存储器高速缓存中一个以上的JVM实例
  • 会话存储器(存储器,数据库,文件存储)和其复制

聚类的Tomcat:

例如问题可能从出现并不是一项简单的任务,并且不恰当地放置你的框架将会使得后来并入群集Tomcat变得很困难。

即使性能在一个Tomcat实例上出现问题,是否可以对Tomcat进行集群?

是的,可以对Tomcat进行群集。您设计应用程序的方式决定了您的应用程序是否可以轻松地进行集群准备,或者将会更加复杂。这个问题可能不是特定于Tomcat,而是一般的应用服务器。

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

  • 你(HTTP)会话存储什么数据
  • 在哪里存储会话
  • 永葆会议
  • 使用的Web服务器应用程序的负载均衡反向代理,例如Apache网络服务器+的mod_proxy/mod_jk的,Nginx的,光油
  • 使用哪个Tomcat连接(阻止IO,NIO,APR)

还有一些其他的问题,但我认为这些都是你可以开始。

3

你是对的,先考虑功能,然后再考虑性能。即使只有一个Tomcat实例也足以满足这一数量的用户。而且,是的,clustering Tomcat是可能的。

1

Tomcat只是一个网络服务器。如果您想要集群化您的网络应用程序,您应该查看系统设置并将HTTP调用发送到其他代码所在的服务器,以卸载主服务器。

这可以通过建立一个不依赖于Web服务器或应用程序的集群动态环境来实现。

至于Tomcat的表现,我不担心它,担心你的代码,因为这是90%的瓶颈所在。

+8

Tomcat不仅仅是一个Web服务器。 – 2012-02-16 20:35:24

6

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

集群Tomcat服务器非常简单。将负载均衡器放在Tomcat服务器的前面。使用会话粘性配置负载平衡器。你将有一个非常好的Tomcat集群。某些客户希望会话故障切换以防一个Tomcat实例发生故障,并且用户可以自动路由到第二个实例而不会丢失会话数据。我认为这对你的部署已经过分了。事实上,定期维护造成的停机时间将远远高于系统故障。我有几个月的Tomcat服务器运行,只需要引入主要代码版本。但是如果需要的话,还有支持会话集群的开源软件包。说到这一点,大多数J2EE应用程序的性能问题都来源于应用程序本身,而不是Tomcat服务器。我遇到的最多的是Top J2EE Application Performance Problems,这是我在解决客户端系统性能问题时遇到的问题。希望这个帮助。

+1

一个系统中的100-400用户可能不适用于其他系统,例如您的部署。这可能是一个“非常繁重”的用法,可能需要集群。我会信任当前生产系统的实际指标和统计数据,而不是适用于某些其他部署的大拇指规则。 – 2012-10-13 14:21:07