Ramp-up Period(in seconds)
【1】決定多長時間啟動所有線程。如果使用10個線程,ramp-up period是100秒,那么JMeter用100秒使所有10個線程啟動並運行。每個線程會在上一個線程啟動后10秒(100/10)啟動。Ramp-up需要要充足長以避免在啟動測試時有一個太大的工作負載,並且要充足小以至於最后一個線程在第一個完成前啟動。 一般設置ramp-up=線程數啟動,並上下調整到所需的。
【2】用於告知JMeter 要在多長時間內建立全部的線程。默認值是0。如果未指定ramp-up period ,也就是說ramp-up period 為零, JMeter 將立即建立所有線程。假設ramp-up period 設置成T 秒, 全部線程數設置成N個, JMeter 將每隔T/N秒建立一個線程。
【3】Ramp-Up Period(in-seconds)代表隔多長時間執行,0代表同時並發

Delay Thread creation until needed
延遲創建線程,直到該線程開始采樣,即之后的任何線程組延遲和加速時間為線程本身。這樣可以支持更多的線程,但不會有太多是同時處於活動狀態。
調度器
選中調度器后,需要輸入啟動和結束時間。當測試啟動時,如果必須JMeter會等待啟動時間到達。在每個周期 結束,JMeter檢驗結束時間是否到達,如果是,運行停止,如果不是測試被允許繼續,直到迭代限制到達。
另外你可以使用啟動延遲和持續時間文本域。注意啟動延遲會覆蓋啟動時間,持續時間會覆蓋結束時間。
jmeter壓力測試(踩坑)報錯:java.net.BindException: Address already in use: connect
最近在寫搜索接口服務,寫完接口進行壓力測試,但是在長期線程較高的進行測試時會報如下錯誤:
java.net.BindException: Address already in use: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179) at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:328) at org.apache.jmeter.protocol.http.sampler.MeasuringConnectionManager$MeasuredConnection.open(MeasuringConnectionManager.java:114) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447) at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:654) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:413) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1166) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1155) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:475) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:418) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249)
排除問題:
首先先查看服務器的日志,發現沒有報錯。
然后查看nginx數據,發現請求數和測試發出的請求數不一致,服務器接收到的少,就想到丟失請求。
后來經過查找資料了解是windows 機器的問題,
原因:windows提供給TCP/IP鏈接的端口為 1024-5000,並且要四分鍾來循環回收它們,就導致我們在短時間內跑大量的請求時將端口占滿了,導致如上報錯。
解決辦法(在jmeter所在服務器操作):
1.cmd中輸入regedit命令打開注冊表;
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右鍵Parameters;
3.添加一個新的DWORD,名字為MaxUserPort;
4.然后雙擊MaxUserPort,輸入數值數據為65534,基數選擇十進制;
5.完成以上操作,務必重啟機器,問題解決。
解決后的測試結果就不再報錯:
補充:我在修改上述問題后可以進行正常測試,但是過了兩天增加線程數后又出現同樣的問題,進行以下配置會正常進行測試。
在上述三步驟后再添加TcpTimedWaitDelay,數值為30-300 選擇十進制。
同樣還是需要重新啟動電腦。
原文鏈接:https://blog.csdn.net/zhangxiaohui4445/article/details/100162317
