天天看點

apache和tomcat性能優化

一、Apache優化

修改httpd-mpm.conf檔案

KeepAlive ON

<IfModule prefork.c>

StartServers       200

 MinSpareServers    5

 MaxSpareServers   20

ServerLimit     6500

 MaxClients       6000

 MaxRequestsPerChild  8000

</IfModule>

# worker MPM

# StartServers: initial number of server processes to start

# MaxClients: maximum number of simultaneous client connections

# MinSpareThreads: minimum number of worker threads which are kept spare

# MaxSpareThreads: maximum number of worker threads which are kept spare

# ThreadsPerChild: constant number of worker threads in each server process

# MaxRequestsPerChild: maximum number of requests a server process serves

<IfModule worker.c>

StartServers         400

 MaxClients         300

 MinSpareThreads     40

 MaxSpareThreads     150

ThreadsPerChild     50

 MaxRequestsPerChild  6000

 根據自己網站的實際能力修改,後續會有參數的具體意義!

二、Tomcat優化:

1.java虛拟機性能優化

    可以給java虛拟機設定使用的記憶體,如果你選擇不對,虛拟機不會自動補償.可通過指令行的方式改變虛拟機使用記憶體的大小:

   -Xms<size>  JVM初始化堆的大小

   -Xmx<size>  JVM堆的最大值

我們一般把-Xms和-Xmx設為一樣大,而堆的最大值受限于系統使用的實體記憶體.一般使用資料量較大的應用程式會使用持久對象,記憶體使用有可能迅速地增長.當應用程式需要的記憶體超出堆的最大值時虛拟機就會提示記憶體溢出,并且導緻應用服務,崩潰。是以一般建議堆的最大值設定為可用記憶體的最大值的80%.

Tomcat預設可以使用的記憶體為128MB,在較大型的應用項目中,這點記憶體是不夠的,需要調大.

Windows下,在檔案/bin/catalina.bat中,Unix下,在檔案/bin/catalina.sh的前面,增加如下設定(也許Solaris的設定和Unix類似,不太清楚,研究過再說):

JAVA_OPTS='-Xms【初始化記憶體大小】 -Xmx【可以使用的最大記憶體】'

需要把這個兩個參數值調大.例如:

        JAVA_OPTS='-Xms256m  -Xmx512m'

        表示初始化記憶體為256MB,可以使用的最大記憶體為512MB.

另外需要考慮的是Java提供的垃圾回收機制,虛拟機的堆大小決定了虛拟機花費在收集垃圾上的時間和頻度,如果堆的大小很大,那麼完全垃圾收集就會很慢,但是頻度會降低.如果你把堆的大小和記憶體的需要一緻,完全收集就很快,但是會更加頻繁.調整堆大小的的目的是最小化垃圾收集的時間,以在特定的時間内最大化處理客戶的請求

三、 如何加大tomcat連接配接數

在tomcat配置檔案server.xml中的<Connector ... />配置中,和連接配接數相關的參數有:

minProcessors:最小空閑連接配接線程數,用于提高系統處理性能,預設值為10

maxProcessors:最大連接配接線程數,即:并發處理的最大請求數,預設值為75

acceptCount:允許的最大連接配接數,應大于等于maxProcessors,預設值為100

enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設定為false

connectionTimeout:網絡連接配接逾時,機關:毫秒。設定為0表示永不逾時,這樣設定有隐患的。通常可設定為30000毫秒。

其中和最大連接配接數相關的參數為maxProcessors和acceptCount。如果要加大并發連接配接數,應同時加大這兩個參數。

web server允許的最大連接配接數還受制于作業系統的核心參數設定,通常Windows是2000個左右,Linux是1000個左右。Unix中如何設定這些參數,請參閱Unix常用監控和管理指令

tomcat4中的配置示例:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

port="8080" minProcessors="10" maxProcessors="1024"

enableLookups="false" redirectPort="8443"

acceptCount="1024" debug="0" connectionTimeout="30000" />

對于其他端口的偵聽配置,以此類推。

2. tomcat中如何禁止列目錄下的檔案

在{tomcat_home}/conf/web.xml中,把listings參數設定成false即可,如下:

<servlet>

...

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

</servlet>

3. 如何加大tomcat可以使用的記憶體

tomcat預設可以使用的記憶體為128MB,在較大型的應用項目中,這點記憶體是不夠的,需要調大。

Unix下,在檔案{tomcat_home}/bin/catalina.sh的前面,增加如下設定:

JAVA_OPTS='-Xms【初始化記憶體大小】 -Xmx【可以使用的最大記憶體】'

需要把這個兩個參數值調大。例如:

JAVA_OPTS='-Xms256m -Xmx512m'

表示初始化記憶體為256MB,可以使用的最大記憶體為512MB

繼續閱讀