【注意】最后更新于 June 12, 2021,文中内容可能已过时,请谨慎使用。
作为一个常年使用Mac进行开发的程序猿,或多或少会接触到一些高并发的任务,动辄就需要电脑来它几千个线程,几万几十万个QPS。
但是Mac的普通版本并没有为这种行为进行优化,最简单的,你在终端输入ulimit -a,你会看到当前系统能够打开的文件描述符默认只有……256。这根本不够好嘛?!
但是作为一个Linux使用经验丰富的人,你一定以为它可以通过/etc下的配置修改。可惜Mac不是Linux而是FreeBSD体系,而且它这个配置自成一派,如果不谷歌一番,我还真不知道怎么改呢。
在最新版的EI Capitan系统,要修改这个值,首先需要关闭csrutil。Mac对csrutil的安全措施很到位,你使用sudo是不能关闭的,首先需要进入recovery mode,也就是重启时按下command+r,进入恢复模式,然后打开终端,输入csrutil disable,然后重启,建立如下两个文件:
/Library/LaunchDaemons/limit.maxfiles.plist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>524288</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
|
/Library/LaunchDaemons/limit.maxproc.plist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
|
再重启一次,执行ulimit -a,你就会发现数字都变化了,现在可以安心测试了!
PS:其实你可以先建立文件再进入恢复模式的,这样一次重启就足够了
文章作者
尚弟
上次更新
2021-06-12
(7e4096a)
许可协议
© Copyright 2021 by 尚弟