前言
最近用jmeter做一些接口的壓力測試,記錄下使用過程中遇到的一些問題。
在使用window機器做並發壓測的時候,發現並發數設置100的時候,會出現報錯:java.net.SocketException: Socket operation on nonsocket: connect
環境准備:
java 1.8
jmeter 5.1.1
jmeter環境
jmeter環境依賴JAVA環境,需安裝JDK1.8環境,JDK環境安裝網上一大堆教程,自己去想辦法吧,我這里就不多說了。
jmeter的安裝包,網上隨便下載一個就可以了https://jmeter.apache.org/download_jmeter.cgi
下載zip包,解壓到本地,打開apache-jmeter-5.1.1\bin目錄,找到jmeter.bat雙擊就可以了
需求案例
壓測的接口是我本地隨便寫的一個接口,接口相關信息如下
接口訪問地址:http://127.0.0.1:8000/api/test/demo
請求方式:get
本次測試目標:設置50,100, 200並發數,測試服務器發最大TPS值
jmeter壓測
打開jmeter界面添加線程組,設置虛擬用戶數100(也就是並發數),每秒啟動100個線程,循環1000次
添加http請求
- 請求方式: http
- ip地址:也就是你部署服務的機器的ip,本機可以寫127.0.0.1
- port端口:8000
- HTTP請求方式: get
- Path 接口的地址: /api/test/demo
添加查看結果數和聚合報告
100並發報錯
當並發數設置100,啟動測試后,會出現報錯:java.net.SocketException: Socket operation on nonsocket: connect
-
新建DWORD值,name:TcpTimedWaitDelay,value:30(十進制)設置為30秒
-
新建DWORD值,name:MaxUserPort,value:65534(十進制)最大連接數65534
右鍵-新建DWORD值
重命名后,選中十進制,設置對應的值
新建DWORD值,name:MaxUserPort,value:65534(十進制)最大連接數65534