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

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

Note

如下案例分析基於 CentOS 7, 對於其餘版本的 Linux 操做系統, 會略有不一樣, 請注意。併發

症狀描述

虛機在正常運行過程當中,忽然發現 SSH 鏈接失敗。重啓虛機之後,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, 默認應該爲以下內容ide

    # 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.ui

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

當即訪問http://market.azure.cn操作系統

相關文章
相關標籤/搜索