使用Apache JMeter測試基於epoll機制的高併發socket服務器
設備:
基於TCP的羣聊服務器運行於服務器Ubuntu16,JMeter位於win10.
遇到的問題:
剛開始使用JMeter進行TCP測試時,報timeout錯誤。
問題的解決:
對於timeout的問題,首先判斷是否已經將對應端口對外開發,檢查了防火牆是否允許對端口的訪問,使用了Telnet對端口進行測試,這個時候發現,使用127.0.0.1加端口號的時候可以得到正確的相應,但是使用服務器的ip地址的時候就是拒絕訪問,於是判斷可能是ip的原因,然後查到了ip地址的區別,將綁定ip從127.0.0.1換爲了0.0.0.0,使用Telnet測試通過。
於是在JMeter上填寫好對應的參數以後,終於成功了,但是測試的結果不是非常好。
測試結果:
剛開始將所有描述符都設置爲了非阻塞模式,當連接數量超過6個以後就會報出Resource temporarily unavailable,解決方法:What can cause a “Resource temporarily unavailable” on sock send() command
,使用阻塞模式後恢復了正常,但是連接數量還是會受到限制。
關閉測試工具後:
只有6個進入了time_wait狀態,其他的沒有進入,有待研究。
參考文章:
JMeter的安裝
Ubuntu端口打開
IP地址127.0.0.1與0.0.0.0的區別
Apache JMeter TCPSampler的使用及自定義
jmeter 的 tcp 測試核心知識點理解