我正在使用tomcat将PDF转换为PNG。 我使用Jmeter来加载/吞吐量testing应用程序使用英特尔(R)至强®CPU X5550 @ 2.67GHz的服务器,有16个超线程核心。 Tomcat6有2gig的堆内存分配,连接器被设置为处理1000个并发连接。 在我的负载testing期间,我发现随着用户数量的增加,响应时间降低,这是正常的。 然而,负载平均值非常低(一台16核心机器大约为1),CPU使用率约为60%。 我通过JMX使用jconsole监视tomcat实例,发现内存使用不是问题。 为了减less响应时间,我在8个不同的端口上创build了大约8个tomcat实例,在负载testing期间负载平衡器负责平衡所有8个端口之间的负载。 这一次,我发现服务器能够处理更多的并发连接,而不会降低响应时间。 负载平均值也高到7.所以,看起来像tomcat没有有效地使用CPU只有一个实例设置(我甚至尝试在不同的端口上创build多个连接器)。
好像我们需要在一台机器上运行多个tomcat实例来提取最高的性能。 做这个设置不是最佳的,因为在一个服务器池上创build多个实例,并维护它将是一个痛苦。
我的问题是,是否有可能configurationtomcat这样一个单一的实例将尽可能多的CPU使用高负载平均?
如果您对设置有任何疑问,请发表评论。
我会很感激任何帮助/指针。
它看起来应用程序有瓶颈。 我想它只使用一个线程来转换PDF文件。
Tomcat并行运行servlet,但是当servlet调用单线程库时,Web应用程序将成为单线程应用程序。 你必须修改你的应用程序来使用更多的线程。
一个不太好的解决方法就是运行尽可能多的Tomcat实例,并为请求负载均衡(正如您在问题中提到的那样)。