我将Tomcat6与Apache2一起使用。

在Ubuntu实例上,我有运行8GB RAM的Apache2,因此决定具有以下apache2.conf配置。

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          550
    ServerLimit         550
    MaxRequestsPerChild  0
</IfModule>


使用以下参数和this blog post(how to configure apache MPM)完成上述配置。

Apache Memory Usage (MB): 611.719
Average Proccess Size (MB): 8.26647


在另一个实例上,我有一个运行8GB RAM的Tomcat6。在Tomcat6 server.xml中,使用以下配置。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8080" maxThreads="500"/>


我的问题是


在Tomcat6中计算/确定number maxThreads参数的过程/步骤是什么?
应该如何进行内存分配?

最佳答案

Tomcat6是Java应用程序,因此,内存分配由JVM完成。我想您愿意通过apache代理tomcat,如果这样通常会导致1个apache客户端最终成为1个apache线程,因此建议在tomcat中使用的线程数比apache中的MaxClients指令少。这就是说,计算maxThreads参数可能很困难,具体取决于您的应用程序,每个线程可能会改变其内存使用情况,取平均值可能会有用,但是您还必须考虑其他JVM内存空间,eden,permgen等。

看一下JVM内存设置,每个线程堆栈设置,...我想这就是您想要的。

10-07 19:52