macOS 修改最大文件描述符、最大用戶進程數


===============================================

 2020/2/24_第1次修改                       ccb_warlock

 

===============================================

由於最近在新的macOS上開發.net core項目,針對新改造的api接口需要做壓測,而系統默認的文件描述符的設置並不適合開發壓測,所以需要想方法修改為我需要的配置。

網上找了半天都是一堆臨時解決方案,即當前設置有效,一重啟又恢復到最初的系統配置,對於開發人員來說顯然不方便,所以搜了半天終於找到了永久生效的修改方案,這里作個記錄。

 

版本:macOS Catalina 10.15.3

 


一、新增配置文件

# 配置系統的最大文件描述符

sudo vi /Library/LaunchDaemons/limit.maxfiles.plist

# 將下面的內容添加到limit.maxfiles.plist中,wq保存。

<?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>65535</string>
          <string>65535</string>
        </array>
      <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>

PS.這里我將文件描述符修改為65535,雖然macOS相比linux可以設置的更大,不過這個配置對於做壓測已經夠了。

 

# 配置系統的最大進程數

sudo vi /Library/LaunchDaemons/limit.maxproc.plist

# 將下面的內容添加到limit.maxproc.plist中,wq保存。

<?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>

PS.貌似macOS的最大進程數最大只能配置2500,至於為什么不能像linux一樣配置到65535,看資料是因為macOS限制了最大進程數為2500(https://apple.stackexchange.com/questions/368011/how-to-increase-the-max-user-processes-hard-limitmojave/368020)。

macOS Server則是根據內存大小,限制了最大進程數的值(https://support.apple.com/zh-cn/HT3854

 


二、 修改文件權限

 # 修改2個文件的權限

chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist

 


三、更新配置 

# 查看更新之前的參數

ulimit -a

 

# 更新配置

launchctl limit

 

# 重啟os

sudo reboot

 

# 重啟后,查看更新之后的參數

ulimit -a

 

可以看到,更新后的“open files”和“max user processes”已經修改成了需要設置的值了。

 


參考資料:

1.https://blog.csdn.net/mingtingjian/article/details/77675761

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM