我目前在开发和生产中使用Tomcat6作为Web容器。
我听说Tomcat不是用于生产环境的最佳性能Web容器,这是真的吗?
Tomcat在性能和内存管理方面是否足够用于生产环境?
我们的系统有大约100至400个用户。
对我来说,更重要的是Web应用程序的编写方式和所涉及的操作类型。
即使一个Tomcat实例的性能存在问题,也可以将其集群化吗?
谢谢。
我目前在开发和生产中使用Tomcat6作为Web容器。
我听说Tomcat不是用于生产环境的最佳性能Web容器,这是真的吗?
Tomcat在性能和内存管理方面是否足够用于生产环境?
我们的系统有大约100至400个用户。
对我来说,更重要的是Web应用程序的编写方式和所涉及的操作类型。
即使一个Tomcat实例的性能存在问题,也可以将其集群化吗?
谢谢。
我目前在开发和生产中使用Tomcat6作为Web容器。
我听说Tomcat不是最适合生产环境的Web容器。这是真的吗?
这取决于你怎么看待它。Tomcat可以表现得非常好,在生产环境中被广泛使用,具有最大的用户基础。一些商业应用服务器在幕后使用Tomcat,甚至不告诉你。
当然,你不应该将Tomcat的原始性能与经过良好调整的Web容器相比较。Tomcat可以进行调整以获得比其原始状态更好的性能。例如,你可以搜索“tomcat production”来了解人们如何在真实的生产环境中管理它,并获得许多建议、技巧等。
Tomcat在性能和内存管理方面是否足够用于生产环境?
是的,它足够用了。当你需要更多时,有很多供应商提供商业版本的Tomcat,包括监控和工具,帮助你在生产环境中维护你的应用程序。
我们的系统有大约100到400个用户。
Tomcat肯定可以处理更多用户。取决于你的应用程序/系统的性质,你可能需要多个Tomcat实例。在真正的生产环境中,将Tomcat进行集群是明智的选择。
对我来说,更重要的是Web应用程序的编写方式和Web应用程序内部的操作类型。
这只是一半的真相。
我认为,良好的架构和框架也会在你决定如何构建框架堆栈之前,在你准备对Tomcat进行集群时节省大量时间。因此,你需要有关于Web容器应用程序如何工作、你的框架如何在集群环境中处理事务以及它们如何集群的基本知识。
例如,以下问题可能会出现:
对于集群化Tomcat而言,这并不是一项简单的任务,如果您没有正确地设计框架,那么在以后将集群化Tomcat纳入其中将会变得非常困难。
即使一个Tomcat实例的性能存在问题,是否有可能将其集群化?
是的,可以将Tomcat集群化。您设计应用程序的方式决定了您的应用程序是否易于集群化,或者会更加复杂。这个问题可能不仅限于Tomcat,而是适用于一般的应用服务器。
您可能需要考虑一些问题:
还有一些其他问题,但我认为以上几点已经足够开始处理。
100-400个用户是相对较小的部署。我曾经帮助客户部署Tomcat解决方案,其注册用户数或并发用户数要大得多(在数百万范围内)。我甚至认为您的部署不需要集群。
将Tomcat服务器集群化非常简单。在Tomcat服务器前面放置一个负载均衡器。使用会话粘滞配置负载均衡器即可创建出一个非常好的Tomcat集群。有些客户希望当一个Tomcat实例失败时进行会话故障转移,使用户可以自动路由到第二个实例而不丢失会话数据。但我认为这对于您的部署来说已经过度了。实际上,由于定期维护引起的停机时间会远高于系统故障时间。我的Tomcat服务器运行了数月时间,并且只需要在进行重大代码发布时才需要关闭。但如果需要的话,有开源软件包支持会话集群。
说起来,大多数J2EE应用程序性能问题都源于应用程序本身,而不是Tomcat服务器。以下是我在调试客户系统性能时遇到的最常见的J2EE应用程序性能问题。希望这可以帮到您。
Tomcat只是一个Web服务器。如果你想要集群化你的Web应用程序,你应该查看你的系统设置,并将HTTP调用发送到其他具有相同代码的服务器上,以卸载你的主服务器。
这可以通过拥有一个不依赖于你的Web服务器或应用程序的集群动态环境来实现。
至于Tomcat的性能,我不会担心它,而是要担心你的代码,因为90%的瓶颈都在那里。