mac OS下的资源限制 以及 引出的ulimit, launchctl, sysctl区别
生活随笔
收集整理的這篇文章主要介紹了
mac OS下的资源限制 以及 引出的ulimit, launchctl, sysctl区别
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天在模擬一個(gè)大量socket連接的時(shí)候系統(tǒng)告訴我 socket:Too many open files,之后在查閱怎么修改配置的時(shí)候發(fā)現(xiàn)了有好幾種方式,ulimit, launchctl, sysctl都可以修改文件打開上限,但是在cli下launchctl和sysctl的maxfiles修改都只是改變了參數(shù),cli下的socket連接依然無法創(chuàng)建更多。折騰了將近一下午,終于解決問題,把這些理清楚了!
來自https://serverfault.com/questions/502053/difference-between-ulimit-launchctl-sysctl的回答:
1. ulimit This is a builtin command of your shell (bash/ash/zsh etc). It?temporarily?sets process limits for the current shell. This is not OS X specific by the way. 2. sysctl Most unix-like (Linux/*BSD/OS X) systems set global limit/kernel settings via the?sysctlcommand//etc/sysctl.conf?config file. But see below for the OS X caveat. 3. launchd Seems like OS X does not honor? sysctl.conf?on startup anymore ( https://discussions.apple.com/thread/2781309?start=0&tstart=0). So on OS X, it looks like? sysctlis merely usable for? temporarily?setting the global limits.翻譯:
1、ulimit 這是一種嵌入shell的命令,只能臨時(shí)設(shè)置當(dāng)前shell(也就是當(dāng)前進(jìn)程)的參數(shù)。unix-like OS都有。 2、sysctl 大部分unix-like OS都采用這個(gè)來設(shè)置全局的內(nèi)核限制,sysctl為命令,/etc/sysctl.conf為配置文件。不過請(qǐng)看下面的launchctl 3、 launchctl 看起來OS X在啟動(dòng)的時(shí)候不在尊重sysctl.conf的配置(附鏈接)。所以在OS X上,sysctl僅僅能夠臨時(shí)設(shè)置全局限制。 (第三條看起來和個(gè)人使用下來的感覺一樣,這兩個(gè)配置在OS X上有點(diǎn)混亂)
以下是博主使用下來確認(rèn)的應(yīng)用級(jí)經(jīng)驗(yàn):
ulimit:
ulimit僅作用于當(dāng)前shell,也就是當(dāng)前進(jìn)程 ulimit -n 的設(shè)置理所當(dāng)然的也是臨時(shí)設(shè)置 ulimit下的open files才是真正影響當(dāng)前進(jìn)程打開文件的配置 修改open files的上限不能超過? kern.maxfilesperproc設(shè)置(參見下面sysctl參數(shù))launchctl:
launchctl為macOS特有配置 $ launchctl limit maxfiles maxfiles ? 1024 ? ?10240 可將launchctl子命令寫入/etc/launchd.conf中 有軟配和硬配。軟配為每個(gè)進(jìn)程可自由控制,但不能超過硬配;硬配為只有root才能修改,目的就是給軟配劃定上限。 修改該項(xiàng)配置會(huì)直接同時(shí)設(shè)置sysctl的 kern.maxfilesperproc參數(shù) 熱修改sysctl上限值不會(huì)影響launchctl,而反之,launchctl會(huì)影響sysctl上限值sysctl:
sysctl為系統(tǒng)控制 $ sysctl -a|grep files kern.maxfiles: 10240 kern.maxfilesperproc: 512 由以上兩個(gè)配置項(xiàng)決定,第一個(gè)為內(nèi)核總文件上限,第二個(gè)為每個(gè)進(jìn)程允許的上限 在/etc/sysctl.conf中寫入, 通過配置文件永久更改?重啟生效總結(jié)
以上是生活随笔為你收集整理的mac OS下的资源限制 以及 引出的ulimit, launchctl, sysctl区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞凌课堂丨液晶模块的DE和HV模式
- 下一篇: 性价比高的蓝牙耳机排行榜,推荐200内最