开发者社区> 问答> 正文

同样角色的服务器中有一台服务器CPU持续跑满


问题描述:

同样角色的服务器中有一台服务器CPU持续跑满。配置和另外的服务器完全一样,就是克隆过来的系统,跑的东西完全一样,查看连接数还没以前被克隆那台服务器的连接数高,但CPU已跑满,而其他的服务器基本为30%的使用率 。 如下图所示:





解决过程:

1、登录服务器使用top、vmstat、mpstat分析CPU、软中断、上下文切换的情况,找出问题点。




上面几个图可以看出8核都是100%跑满的,且主要消耗在内核态。软中断、上下文切换都比较正常。

2、使用perf top查看发现主要消耗很多的都在tcp_poll和sock_poll,如下图:



这个tcp_poll说明tcp在等待

3、然后使用strace去抓取进程调用,发现不断的再报EMFILE错误,如下:




4、析这8个mosquitto进程发现他们的socket文件数都差不多在1025附近。这就说明该进程的最大Open files的值应该为1024左右,
查询/proc/pid/limits确认此情况




5、发现用户的软件启动脚本里有个错误:unlimited -n 102400。用户的原意应该想配置最大打开文件数为102400的,但是系统中
并没有unlimited命令,所以这里配置失败了。

修改Max open file的方法:
(1)修改/etc/sysctl.conf,增加
         增加fs.file-max=65535
         保存后执行sysctl –p使其生效
(2)修改/etc/security/limits.conf,增加如下内容:
         * soft nofile 65535
         * hard nofile 65535
(3)关闭应用,重新启动应用















展开
收起
洛欢 2015-07-17 15:49:48 9029 0
1 条回答
写回答
取消 提交回答
  • 学习下
    2015-07-21 05:39:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载