2013-08-22 46 views
0

我試圖遠程運行一個Jmeter負載測試與主窗口框和四個從Linux的盒子。 在這個配置中,我能夠爲每個從機箱只產生最多983個線程,之後我看到拋出異常,說因爲內存不足異常無法創建新線程。我的硬件配置非常高,有64個內核和64 GB RAM。所以硬件不應該是一個瓶頸。 我用於啓動堆大小的設置是3072m。在大多數論壇中,建議減少缺省值爲512k的這個數字。但是如果我保持較低的值,同時在slave box中啓動jmeter-server,則系統會提示我的初始堆大小過低。無法跨越超過特定數量的線程在jmeter

,我使用的其他配置是Linux機器作爲獨立的服務器之一,在這種情況下,我能產卵10k左右線程沒有任何問題。

我已經增加了我的ulimit至32768

有沒有辦法使用主從配置獲得重生多個線程或者我應該完全放棄它,並在並行在所有四個盒單獨運行腳本和編譯數據。 如果是這樣,你能給我一些第二種方法的指針嗎?

回答

0

以下是我所做的一些重要發現。這些數字與我的機器的大小成正比。您可以檢查使用:

cat /proc/meminfo

  • 改變使用ulimit設置:

    ulimit -n 32768

  • 它使一個區別,如果你是root與否。我不確定你是否必須是root用戶或者只是sudo用戶。但以root身份登錄確實可以讓我產生更多的線程。

  • 更改了某些設置sysctl

    /sbin/sysctl net.core.wmem_max=8388608

    /sbin/sysctl net.core.rmem_max=8388608

    /sbin/sysctl net.ipv4.tcp_rmem="4096 87380 8388608"

    /sbin/sysctl net.ipv4.tcp_wmem="4096 87380 8388608"

    /sbin/sysctl net.ipv4.tcp_tw_reuse=0

    /sbin/sysctl net.ipv4.tcp_tw_recycle=0

    /sbin/sysctl net.ipv4.tcp_keepalive_time=1800

    /sbin/sysctl net.ipv4.tcp_max_syn_backlog=4096

0
  • 512K適用於Xss不是Xmx,您可以將Xmx保留爲您設置的值。
  • 使用Java的64位JVM不是32位,並使用最最新的Java版本
  • 您還可以運行每盒許多JMeter的情況下,你所擁有的權力,如果你發現問題
  • 確保您使用的最後一個JMeter的版本

而且閱讀:

+0

是的,我也嘗試增加最大堆大小。但是,如果您沒有權限訪問所有內容,我認爲這不會產生影響。結合其他一些東西來增加堆大小對我來說是個訣竅。 – sid