修改 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容