天天看點

Jmeter之tomcat性能測試+性能改進措施

Jmeter用于tomcat性能測試,因為項目部署在tomcat,正常情況下,一個tomcat可以承受500個并發,通過修改配置,及其相關的tomcat優化,可以承受到1000個并發。

如何測試tomcat優化前和優化後的結果?

通過Jmeter測試,就能達到對應的效果

Jmeter測試tomcat比較簡單

1.建立對應的線程組

Jmeter之tomcat性能測試+性能改進措施

2.建立Http請求 需要填寫的一個是協定名稱,一個是IP位址或域名,一個是端口号,還有一個是路徑

這個路徑預設不填也行,如果具體到post或get請求及其攜帶參數,就需要填寫

Jmeter之tomcat性能測試+性能改進措施

如果測試具體的get或post請求,加請求url和對應的參數,如下圖所示:

注意和postMan工具有些相似,不同于postman,Jmeter可以進行多使用者測試,即多個線程測試

Jmeter之tomcat性能測試+性能改進措施

 通過察看結果樹,可以檢視請求失敗:

Jmeter之tomcat性能測試+性能改進措施

聚合報告可供分析:

Jmeter之tomcat性能測試+性能改進措施

 server.xml檔案:

線程池優化:

Jmeter之tomcat性能測試+性能改進措施

連接配接池優化:

Jmeter之tomcat性能測試+性能改進措施

Executor重要參數說明:

name:共享線程池的名字。這是Connector為了共享線程池要引用的名字,該名字必須唯一。預設值:None;

namePrefix:在JVM上,每個運作線程都可以有一個name 字元串。這一屬性為線程池中每個線程的name字元串設定了一個字首,Tomcat将把線程号追加到這一字首的後面。預設值:tomcat-exec-;

maxThreads:該線程池可以容納的最大線程數。預設值:200;

maxIdleTime:在Tomcat關閉一個空閑線程之前,允許空閑線程持續的時間(以毫秒為機關)。隻有目前活躍的線程數大于minSpareThread的值,才會關閉空閑線程。預設值:60000(一分鐘)。

minSpareThreads:Tomcat應該始終打開的最小不活躍線程數。預設值:25。

threadPriority:線程的等級。預設是Thread.NORM_PRIORITY

連接配接池重要參數說明:

executor:表示使用該參數值對應的線程池;

minProcessors:伺服器啟動時建立的處理請求的線程數;

maxProcessors:最大可以建立的處理請求的線程數;

acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求将不予處理。

這時你會發現性能會得到很大的提升

當然必要的時候,需要修改tomcat的記憶體

tomcat的3種運作模式 

bio: 

預設的模式,性能非常低下,沒有經過任何優化處理和支援.

nio: 

nio(new I/O),是Java SE 1.4及後續版本提供的一種新的I/O操作方式(即java.nio包及其子包)。Java nio是一個基于緩沖區、并能提供非阻塞I/O操作的Java API,是以nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作(bio)更好的并發運作性能。

apr: 

安裝起來最困難,但是從作業系統級别來解決異步的IO問題,大幅度的提高性能.

啟動NIO模式

修改server.xml裡的Connector節點,修改protocol為org.apache.coyote.http11.Http11NioProtocol

上述比對,這也就是我們為什麼選擇NIO的原因