JMeter中的HTTPS套接字错误
Apache JMeter對啟用SSL的應用程序執行性能和/或負載測試時,SSL套接字錯誤可能是經常遇到的麻煩,嚴重阻礙了您的測試工作。本文重點介紹如何通過相應地配置和調優JMeter來克服這些與連接相關的錯誤。
在Jmeter中指示SSL套接字問題的錯誤消息示例包括:
Non HTTP response code: java.net.SocketException Non HTTP response message: Connection reset
Non HTTP response code: java.net.SocketTimeoutException Non HTTP response message: connect timed out
Non HTTP response code: java.net.SocketTimeoutException Non HTTP response message: Read timed out
建議#1:使用最新版本的JMeter
強烈建議使用最新版本,以利用新的改進和組件。
避免在最后一個版本之前使用早于3個版本的版本。
建議#2:在JMeter中啟用DEBUG模式
將以下內容添加到jmeter.properties以啟用JMeter Logger面板:
jmeter.loggerpanel.display=true
要通過JMeter菜單將日志級別增加到DEBUG:
Options -> Log Level -> DEBUG
要通過log4j2.xml啟用上下文和線路日志記錄的調試模式:
<Logger name="org.apache.http" level="debug" />建議#3:設置連接超時
JMeter中的默認連接超時是開箱即用的20秒。為幫助診斷和解決套接字連接問題,增加此值通常很有幫助。為此,請在JMeter測試計劃中為HTTP Request對象指定更高的連接超時。例如,設置為60000(毫秒)以將總超時增加到60秒。
從“配置元素”選項中添加“HTTP請求默認”配置元素(即,右鍵單擊測試計劃并添加此“HTTP請求默認值”)。
在“HTTP請求默認值”中,有一個選項 - 連接'超時(毫秒)'在此字段中指定您的連接超時值,它將應用于所有子采樣器。如果在測試計劃級別添加了“HTTP請求默認值”,則它將應用于所有采樣器和所有線程組。
要指定單獨的連接超時,請在每個采樣器的相同字段中指定。單個采樣器連接超時將覆蓋“HTTP請求默認”連接超時值。
建議#4:延遲線程創建
JMeter可以選擇延遲線程創建,直到線程開始采樣(即,在任何線程組延遲和線程本身的加速時間之后)。這允許非常大的線程總數,前提是不會有太多并發的線程。
建議5:禁用并行下載
JMeter使用更多資源來模擬瀏覽器并行獲取嵌入資源,如css,gif,js和靜態內容。如果有許多用戶,則可能會創建太多線程,并且由于JMeter端的帶寬爭用而開始對響應時間產生負面影響。如果要模擬許多用戶,建議禁用并行下載,因為JMeter不會模擬瀏覽器的緩存,瀏覽器也不會在后續請求中重新下載嵌入式資源。
建議#6:配置受信任和客戶端SSL證書
如果您的應用程序服務器層上有內部簽名或自簽名證書,則需要將JMeter配置為將這些證書識別為有效。要解決此問題,請修改system.properties并使用相關的簽名者證書配置信任庫。
# Truststore properties (trusted certificates)
javax.net.ssl.trustStore=C:/trust.jks
javax.net.ssl.trustStorePassword=sample
如果您的應用程序需要SSL客戶端證書身份驗證或授權,則需要創建密鑰庫并在指向該密鑰庫的system.properties文件中設置以下屬性:
# Keystore properties (client certificates)
javax.net.ssl.keyStore=C:/key.jks
javax.net.ssl.keyStorePassword=sample
建議7:調整JMeter SSL配置
在jmeter.properties中設置下面的屬性,以調整JMeter處理SSL會話,協議和密碼的方式:
要啟用SSL會話共享:
https.sessioncontext.shared=true
設置默認HTTPS協議級別:
https.default.protocol=TLSv1.2
要啟用多個HTTPS協議:
https.socket.protocols=TLSv1 TLSv1.2
要啟用多個密碼:
https.cipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256
要在測試期間保留SSL上下文:
https.use.cached.ssl.context=true
在http 4上設置重試次數
httpclient4.retrycount=1
建議#8:啟用陳舊連接檢查
為避免HTTP連接池出現問題,可能需要在JMeter中啟用陳舊連接檢查。在JMeter測試運行期間接收“Socket Closed”異常時,應使用此步驟。要啟用過時連接檢查,請在user.properties中設置以下屬性:
http.connection.stalecheck$Boolean=true
建議#9:在Web服務器上啟用HTTP Keep-Alive
Keep-Alive是HTTP協議的一個非常重要的特性。它允許客戶端通過單個TCP連接發出多個HTTP請求。這提供了很大的性能提升,因為否則建立許多TCP連接將產生大量不必要的網絡開銷。
建議#10:檢查負載均衡器配置
如果負載測試遇到負載均衡器前端的應用程序,請確保負載均衡器配置了足夠的最大連接限制以處理預期負載。同樣,驗證負載平衡算法不會將過多的流量偏向一個或多個應用程序服務器實例,并且該負載充分分散在應用程序服務器后端之間。
轉載于:https://www.cnblogs.com/a00ium/p/10263498.html
總結
以上是生活随笔為你收集整理的JMeter中的HTTPS套接字错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows下vim高亮systemv
- 下一篇: Docker的使用初探(二):Docke