2015-05-25 15 views
1

我已經用Apache2向Tomcat6前進了。使用Apache2的Tomcat6內存分配

在一個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數量maxThreads參數?
  • 應該如何進行內存分配?

回答

2

Tomcat6是一個Java應用程序,因此這種內存分配是由JVM完成的。我想你願意通過apache代理tomcat,如果通常1個apache客戶端最終會成爲1個apache線程,那麼建議在tomcat中擁有比apache中的MaxClients指令少的線程數。這就是說,要計算maxThreads參數可能很困難,這取決於您的應用程序,每個線程可能會改變其內存使用情況,平均值可能會有用,但您還必須考慮其他JVM內存空間,伊甸園,permgen ......

看看JVM內存設置,每個線程堆棧設置,...我認爲這是你可能要找的。