web應用的併發提升,除了負載均衡。在小企業中也可以通過一些軟件的上的設置來進行一些優化。下面是一些在服務器上修改tomcat參數的優化方法,非常簡單實用!
1、讓Tomcat8 中支持Java語言的特性 NIO(New I/O)
使用NIO在服務器端會有更好的性能,加強服務器端對併發處理的性能。 請注意:很抱歉,在tomcat6在默認的配置選項中是沒有把NIO功能打開。所以很多正在使用Tomcat6的朋友們本以爲能快活的使用上NIO。
而NIO則是使用單線程(單個CPU)或者只使用少量的多線程(多CPU)來接受Socket,而由線程池來處理堵塞在pipe或者隊列裏的請求.這樣的話,只要OS可以接受TCP的連接,web服務器就可以處理該請求。大大提高了web服務器的可伸縮性。
可以在控制檯的啓動信息裏看見,默認狀態下沒有被打開nio配置,啓動時的信息,如下:
2015-2-1 12:59:40org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2015-2-1 12:59:40org.apache.catalina.startup.Catalina load修改成支持NIO的類型,配置如下
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
進行測試,被打開nio配置,啓動時的信息,如下:
2015-2-1 13:01:01org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
2015-2-1 13:01:01org.apache.coyote.http11.Http11NioProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2、修改Tomcat 8默認的maxThread
打開server.xml可以看到如下配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改方法:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
註釋:在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有:
minProcessors:最小空閒連接線程數,用於提高系統處理性能,默認值爲10
maxProcessors:最大連接線程數,即:併發處理的最大請求數,默認值爲75
acceptCount:允許的最大連接數,應大於等於maxProcessors,默認值爲100
enableLookups:是否反查域名,取值爲:true或false。爲了提高處理能力,應設置爲false
connectionTimeout:網絡連接超時,單位:毫秒。設置爲0表示永不超時,這樣設置有隱患的。通常可設置爲30000毫秒。
其中和最大連接數相關的參數爲maxProcessors和acceptCount。如果要加大併發連接數,應同時加大這兩個參數。
3、大量的併發也意味着大量的服務器資源,所以修改一下tomcat的JVM參數也是必要的,後面我們會提到關於JVM的優化問題。