macos 性能測試 內(nèi)核優(yōu)化配置

因為自己一直使用自己的macos筆記本,最近發(fā)現(xiàn)系統(tǒng)開多個瀏覽器情況下,出現(xiàn)部分http和websocket出現(xiàn)類似網(wǎng)絡(luò)斷流的問題,經(jīng)過定位發(fā)現(xiàn),應(yīng)該是macos 內(nèi)核參數(shù)需要優(yōu)化導(dǎo)致的,故將自己的分享出來:
解決mac 在糟糕網(wǎng)絡(luò)下 tcp/http 等連接較高概率超時失敗問題

經(jīng)過定位,應(yīng)該是系統(tǒng)的tcp 和 socket連接數(shù)太小的問題,導(dǎo)致開大量應(yīng)用后會出現(xiàn)該問題

1.增加 max files:

查看:

sysctl -a | grep files

輸出:

kern.maxfiles = 12288
kern.maxfilesperproc = 10240

修改:

#設(shè)置系統(tǒng)最大連接數(shù)從12288到1048600.
sudo sysctl -w kern.maxfiles=1048600

#設(shè)置進程連接數(shù)限制,進程的最大連接數(shù)要小于等于全局連接數(shù)
sudo sysctl -w kern.maxfilesperproc=1048576

2.增加max sockets:

查看

sysctl -a | grep somax

輸出:

kern.ipc.somaxconn: 256

修改:

sudo sysctl -w kern.ipc.somaxconn=4096

3.設(shè)置動態(tài)端口范圍portrange

查看:

sysctl net.inet.ip.portrange

輸出:

net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535

說明:Linux動態(tài)端口號默認范圍是32768-65535,也就是說,作為客戶端連接同一個IP和同一個端口號,最多只能建立30000多個連接,而Mac默認只能建立16000個左右的連接。

設(shè)置:

sudo sysctl -w net.inet.ip.portrange.first=32768

說明:設(shè)置動態(tài)分配起點端口號為32768,這樣可以增大客戶端可以建立的連接數(shù)。

4.tcp最大分段壽命

查看:

sysctl net.inet.tcp.msl

輸出:

net.inet.tcp.msl: 30000

說明:最大段壽命*是一個 [TCP] [分段]可以存在于互聯(lián)網(wǎng)系統(tǒng)中的最大時間。它被任意地定義為兩分鐘長。最大段壽命的值用來確定 TIME_WAIT 周期(最大段壽命的兩倍)

設(shè)置:

sudo sysctl -w net.inet.tcp.msl=5000

說明:設(shè)置tcp失敗后回收時間,由默認的30s修改為5秒,一般方便性能測試。

5.設(shè)置ulimit

查看:

ulimit -n 

說明:命令顯示當前shell能打開的最大文件數(shù),默認值:256,該值總是小于kern.maxfilesperproc的值,因為一個shell就是一個進程。

修改:

ulimit -n 1048576

6.確保重啟后參數(shù)生效(永久設(shè)置)

6.1按以上的方式設(shè)置參數(shù)有個問題,當系統(tǒng)重啟后,這些參數(shù)又恢復(fù)成了默認值,解決辦法就是把參數(shù)寫到/etc/sysctl.conf文件中,但是,默認macos這個文件是不存在的,所以首先就要創(chuàng)建它:
sudo touch /etc/sysctl.conf

然后把參數(shù)寫到文件里

kern.maxfiles=1048600
kern.maxfilesperproc=1048576
kern.ipc.somaxconn=4096
net.inet.tcp.msl=5000
net.inet.ip.portrange.first=32768
#net.inet.ip.portrange.last=65535
6.2至于ulimit-n的值,可以把ulimit-n1048576 寫到.bashrc中實現(xiàn)自動修改。
vim ~/.bashrc

然后把參數(shù)寫到文件里

ulimit -n 1048576

如果是創(chuàng)建的.bashrc增加權(quán)限:

chmod 777 ~/.bashrc

重啟系統(tǒng)后,查看批量查看結(jié)果

ulimit -n 

sysctl kern.maxfiles kern.maxfilesperproc kern.ipc.somaxconn net.inet.tcp.msl net.inet.ip.portrange.first net.inet.ip.portrange.last

6.3 最后修改參數(shù)總結(jié):(臨時設(shè)置)

sudo sysctl -w kern.maxfiles=1048600
sudo sysctl -w kern.maxfilesperproc=1048576
sudo sysctl -w kern.ipc.somaxconn=4096
sudo sysctl -w net.inet.tcp.msl=5000
sudo  sysctl -w net.inet.ip.portrange.first=32768
ulimit -n 1048576
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容