疑惑
- 一臺設備的線程數到底可以設置多大?
線程數設置
經過一番搜索找到了這樣的答案:
- Linux下,2g的 java內存,1m 的棧空間,最大啟動線程數=2000
- 線程數建議不超過1000
- jmeter 能啟動多少線程,由你的堆內存和棧內存決定
在找線程數最大值的時候,我也在想為什么要設置最大值呢?隨心所欲些不好么?
然后在搜索的過程中,會發現很多問題是,jmeter運行過程中卡死,內存溢出等問題,這類問題基本都是運行jmeter機器的內存,占用較高,超過了jmeter設置的內存上限,導致內存溢出。
最后在官網中找到如下的答案
在這里需要了解三個關鍵字Xms、Xmx,MaxMetaspaceSize
-Xms1g表示JVM啟動時分配的最大堆內存為1GB。當JVM啟動時,它會嘗試分配最小可用內存,這里設置的是這個最小值。
-Xmx1g表示JVM最大可用堆內存為1GB。當JVM啟動后,它將嘗試使用最大可用內存,這里設置的是這個最大值。
-XX:MaxMetaspaceSize=256m表示JVM的最大元空間內存為256MB。元空間是Java 8及以后版本中用于存儲類的元數據(如類的結構、方法和字段的信息等)的內存區域。通過設置這個參數,可以限制元空間的最大大小。
如果說一個線程數占1M的話,可以根據這個堆內存大小進行計算,這里可以設置1024個線程數。
在哪里設置
找到jmeter/bin目錄下
window 在jmeter.bat文件下設置
我以為mac的話,會在jmeter.sh文件內設置,結果找不到關鍵字…
官網推薦,創建setenv.sh文件。
注意??:這里的大小也并非隨意設置,推薦設置內存50%以下。eg:16G內存,推薦設置不超過8G。
現在基本可以確定了,線程數設置多大合適了。
疑惑
- -XX:MaxMetaspaceSize 值大小與內存設置的大小有何關系
- 一個線程數的占用內存是否可以設置?沒有找到對應內容。