JMeter Sampler-http請求之KeepAlive使用總結


Sampler-http請求之KeepAlive使用總結

測試環境

apache-jmeter-2.13

KeepAlive使用介紹

說明:

1、Use KeepAlive 勾上,則表示為求連接設置請求頭Connection: keep-alive,該配置對默認的HTTP實現不起作用,因為連接重用不受用戶控制,對Apache HTTP組件HttpClient起作用。

這個配置到底有啥用呢?

我們都知道,發起HTTP請求時,需要建立TCP連接,對於普通非keep-alive請求,即不包含請求頭Connection: keep-alive的請求,請求完成后,會關閉該TCP連接,再次發起同類請求時,需要再次建立TCP連接,高並發的情況下,會增加服務器資源消耗,對於keep-alive請求,則會告訴服務器,HTTP請求結束后,在條件允許的情況下,保持TCP連接,下次發送請求時,使用上次建立的TCP連接進行數據傳輸。至此,這個配置有啥用,就不用我說了吧

2、注意,這里KeepAlive是針對同一個線程而言的,其使用效果受到多

方面影響,如下:

客戶端

Http實現

HTTPClient4 使用Apache Http組件 HttpClient 4.x(推薦使用)

Java 使用JVM提供的HTTP實現。

空值 如果HTTP請求默認值配置元件中,Advanced選項卡中有設置非空請求客戶端實現,則使用該客戶端實現,否則使用jmter.properties文件中jmeter.httpsampler屬性定義的客戶端實現,否則使用默認的 HttpClient4。(原文:Blank value does not set implementation on HTTP Samplers, so relies on HTTP Request Defaults if present or on jmeter.httpsampler property defined in jmeter.properties

注意:Java HTTP實現有以下限制:

  • 因為沒有對連接重用做控制。所以,當連接被JMeter釋放時,該連接可能被相同的線程重用,也可能不被重用。
  • 最適合單線程使用—各種設置都通過系統屬性定義,因此作用於所有連接。
  • 通過代理處理HTTPS時存在bug(CONNECT未正確處理)。請參閱Java Bug 6226610和6208335。
  • 不支持虛擬主機。
  • 僅支持這些方法:GETPOSTHEADOPTIONSPUTDELETETRACE
  • 不支持使用密鑰庫配置進行基於客戶端的證書測試。

JMeter配置

使用HTTPClient4實現時,連接重用還受到JMeter自身參數配置文件httpjmeter.propertieshttpclient4.time_to_live參數配置的影響,如下,該參數值以毫秒為單位,默認為2000,無論如何,http的生存時間,超過該參數值的連接,不會被重用。

httpclient4.time_to_live=2000

服務端

JMeter Use KeepAlive使用效果可能受到服務器相關配置影響,不同類型的服務器配置不一樣,以Nginx為例子,和以下配置相關

keepalive_requests number 設置通過一條keep-alive連接可以服務的最大請求數。當請求數超過該指令設置的最大值時,連接將被關閉。

keepalive_time time 限制通過keep-alive連接發起的請求,可以被處理的最大時間,達到該時間,則關閉該連接

keepalive_timeout timeout;
timeout 設置keep-alive客戶端連接在服務器端保持open狀態時間,超過這個時間服務器將關閉連接。如果設置為0,那么禁用keep-alive客戶端連接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM