修改 Linux VM 中單個用戶最大進程數的限制


在部署有並發任務執行的虛機上, 會遇到 SSH 無法訪問的問題. 本文將幫助你找出其中一種比較特殊的原因, 並提供解決方案。

Note

以下案例分析基於 CentOS 7, 對於其他版本的 Linux 操作系統, 會略有不同, 請注意。

症狀描述

虛機在正常運行過程中,突然發現 SSH 連接失敗。重啟虛機以后,SSH 連接恢復正常。再運行一段時間之后,又發生同樣的問題。

問題分析

  • 經過日志分析,azure 平台和虛機運行均無異常。但是從 /var/log/secure.log 里發現如下信息 “sshd[23106]: error: do_exec_pty: fork: Resource temporarily unavailable”
  • 根據了解,該虛機上運行的應用程序屬於並發,在同一時間段,同一用戶的進程數會超過 10000.已經超過了默認的 4096 最大值。這是導致本次 SSH 登陸失敗的原因

解決方案

  • 重啟虛擬機並以管理員登陸虛擬機,切換成 root 用戶
  • 查看文件 /etc/security/limits.d/20-nproc.conf, 默認應該為如下內容

    # Default limit for number of user's processes to prevent
    # accidental fork bombs.
    # See rhbz #432903 for reasoning.   
    *          soft    nproc     4096
    root       soft    nproc     unlimited
    
  • 編輯文件 /etc/security/limits.d/20-nproc.conf,將高亮顯示行內的 4096,調整為相應的值,或者改成 unlimited.

更多詳細介紹, 請參考這篇文檔

立即訪問http://market.azure.cn


免責聲明!

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



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