修改 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操作系统

相关文章
相关标签/搜索