2011-09-28 15 views
24

我創建了一個使用libev創建大量開放tcp連接到我正在工作的應用程序的負載測試程序。目前,它的炸彈在出去256個連接,由於NOFILES限制:如何增加osx上的套接字上的負載測試限制?

ulimit -n 
256 

我可以做下面增加這1024:

ulimit -n 1024 

但我不能進一步增加它。理想情況下,我想將它設置爲1048576。它提供了以下錯誤:

ulimit: open files: cannot modify limit: Invalid argument 

我怎樣才能提高的ulimit進一步在OSX?

回答

47

(答案更新爲使用-S幾個評論者建議)

$ sysctl kern.maxfiles 
kern.maxfiles: 12288 
$ sysctl kern.maxfilesperproc 
kern.maxfilesperproc: 10240 
$ sudo sysctl -w kern.maxfiles=1048600 
kern.maxfiles: 12288 -> 1048600 
$ sudo sysctl -w kern.maxfilesperproc=1048576 
kern.maxfilesperproc: 10240 -> 1048576 
$ ulimit -S -n 
256 
$ ulimit -S -n 1048576 
$ ulimit -S -n 
1048576 
+1

奇怪 - 我試圖在我家的Mac(雪豹),它沒有工作,但在我的工作mac(也是雪豹)它工作正常。嗯...... – Chris

+0

什麼都不起作用 - 你有沒有收到任何錯誤信息? – Grrrr

+0

你能詳細說明這些設置嗎?我假設'maxfilesperproc'的意思是「每個進程」,它有意義的是它必須小於'maxfiles',但是你有什麼理由選擇這個特定的數字? –

2

嘗試以root身份運行(例如,在運行ulimit命令和程序之前執行「sudo -s」)。

請注意,我不知道這一次1 000萬美元以上的TCP套接字是現實可行的(雖然我聽說發生了什麼有趣的是,當你嘗試; ^))

此外,檢查出this

+0

那麼,1M的連接可能不太現實,但我們會看到我能走多遠。只是不想被ulimits人爲限制。 – Chris

2

一件事:在端口限制爲65535。所以,你可能並不像你想盡可能多的獲得。

相關問題