文件加载异常问题排查

场景:

常驻内存脚本执行逻辑微信分账接口调用前会加载cert文件,运行一段时间后发现加载文件失败导致调用微信接口失败。

排查过程:

1.问题表象时调用微信接口失败,先查cert文件是否存在。排查后,文件存在。

2.猜测是文件打开太多到达西安痛导致加载失败。马上执行

ulimit -u
cat /proc/sys/fs/file-max

数量设置了10w。查看当前系统文件打开数

lsof -Ki|wc -l

才2k多,陷入死局。

3.后面听说使用了supervisor做进程守护,找到supervisord的进程

ps aux|grep supervisord
cat /proc/xx/limits

发现supervisor的最大文件描述符数量太小(Max open files为1024),被supervisor管理的子进程会继承父进程的文件描述数量限制,导致加载文件失败。修改minfds=10240,问题暂时解决。

4.刨根问题,为啥常驻消费脚本的文件打开数量能大于1024.

ps aux|grep xxxx
lsof -p pid

发现很多CLOSE_WAIT 

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
lsof -p pid|awk '{print $10}'|grep 'CLOSE_WAIT'|sort|uniq -c |sort -nr|more

代码单例curl请求微信接口,还是老老实实每次new吧。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值