记一次nproc参数带来的坑

背景

机房迁移:应用迁移,采用的是扩容迁移
应用在老机房是好的,扩到新机房就有问题

问题表象

1、刚启动服务一段时间是好的;
2、重启是可以恢复一会后又会有报错;
3、有报错的同时也有正常业务日志
查证流程
第一阶段:
由于是机房搬迁,初步怀疑是网路层面的问题(再加上新机房确实是存在部分机器网络的问题),
且报错表象也是超时报错,所以一直纠结网络层面,初期时间一直耗在网络上面进行变更;
第二阶段:
网络做了变更优化,但是问题还是并未解决,于是在总部,在其他机房以及老机房四地机房都进行相应的
再一步扩容进行验证,发现,所有的新加的还是存在问题;
第三阶段:
当初步证实不是网络问题后,重新恢复是否是tomcat包的配置以及服务器上配置是否存在差异,再次进行验
证,所有的应用相关的配置再从老服务器上进行拷贝覆盖,再次进行验证,发现还是存在问题,且同样的是
刚开始是好的,后面过段时间就崩

第四阶段:
网络排除,应用配置排除后,也开始怀疑服务器系统层面的配置差异了,且研发再进行dump分析后,也提出
过是否是与文件句柄数有关导致的,这是第一次最接近正确答案的时候,但是通过查看,文件句柄数和老服
务器上配置是一样的 65535,但是此时也发现了新老服务器上/etc/security/limits.conf  这个文件配置参数有
点差别,修改了这个配置文件的服务就一直正常了

老服务器配置
新服务器配置

复盘:
Linux操作系统中利用ulimit限制shell启动进程占用的资源,ulimit支持对用户的打开进程数、进程打开文件句
柄数、进程打开文件的大小、进程coredump文件大小等资源进行限制,从而防止某个用户进程过度占用系统
资源,避免影响整个操作系统和其他应用的正常运行。但是使用ulimit进行限制后,当用户资源超限制时会出
现各种各样的报错,用户打开进程数,即nproc参数。

用户的nproc达到限制,无法创建新的进程
由于是用户打开进程数达到了限制,那么排查方法主要是查看用户目前打开的进程的数量
ps -u web -Lf
超过了设置的800 的值
问题基本确定在新机房服务器的这个配置上面了
web             soft    nproc           800
web             hard    nproc           1000

设置限制数量,第一列表示用户,*表示所有用户
soft 软限制,hard硬限制。当数量达到软限制的时候会出现报警,达到硬限制的时候才不会增加
soft nproc: 单个用户可用的最大进程数量(软限制)
hard nproc: 单个用户可用的最大进程数量(硬限制)
soft nofile:可打开的文件描述符的最大数(软限制)
hard nofile:可打开的文件描述符的最大数(硬限制)

进程数

关于nproc设置:centos6,内核版本是2.6.32. 默认情况下,ulimit -u的值为1024,
是/etc/security/limits.d/90-nproc.conf的值限制;注释掉这个限制后,值为95044

在这里插入图片描述

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值