- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
阿里云ECS的CPU100%排查
2021-05-11
一、背景和现象
初创公司,架构lanmp,web前端和后端分开服务器,业务驱动次要是nginx和apache,nginx次要是处理静态文件和反向代理,前后端、搜索引擎、缓存、队列等附加的服务都是用docker容器部署。由于比较初级,上传文件和采集文件都是直接写在硬盘上,涉及到的名目共享,就在其中一台服务器存储并且nfs共享。我们暂且分为ECS1(apache1)、ECS2(apache2)、ECS3(nginx)。某天网站业务中缀,但是没有报错。一直在等待响应,默认响应超时是一分钟,所以很基础高可用没有起到作用。中缀10分钟左右,重启服务,提示“open too many files”,但是lsof统计没几个。由于初级处理不了,所以直接重启服务器,一段时间后一切恢复正常,可是其次天又来一次这种情况。
?
?
二、第一次消灭后的排查思路
原来第一次发觉这种问题的时候就要清查缘由了,看了一下zabbix监控图像其中缀了格外钟,包括网络、内存、CPU、硬盘、IO等监控数据。首先想到的是网络问题,结论是zabbix-servert猎取不到了zabbix-agent采集的数据,估量就是网络不通了。
但是,这个结论站不住脚,由于我本身通过ssh登录服务器,并且命令输入无卡顿,不至于头文件都传不过来。后来一看阿里云的云监控,上面有数据,好像也可以佐证网络这个说法,由于云监控是阿里云内部的监控,可以内网猎取到监控数据。直到看CPU的使用率这项,发觉有一段时间的CPU使用率100%。并且我重启的时候CPU恢复正常,不能说网络肯定没问题,但系统确定有问题。也可以解释由于CPU使用已经是100%,zabbix-agent和根本不能正常运转,所以没有监控数据。由于这个公司全部都是云服务器,没有使用IDC所以我们也没有安装smokeping来监控,接着我们就不把重心在网络上了。
目前把握的信息就是:在毫无征兆的情况下,CPU暴涨到100%,重启之前一直保留,重启之后恢复原样。匆忙之中又看了一下系统各日志,由于太匆忙,没有总结,没有找到什么有价值的东西。现在有下面几种猜想:第一,程序的bug或者部署不当,触发之后耗尽资源。其次、docker容器的bug。第三、网络攻击。第四、病毒入侵。第五、阿里云方系统不稳定。
小总结了一下,现在问题还没有找出来。下次还有这个问题的可能,所以先尽量防备,但是又不能重启一刀切。所以在zabbix上面设置了自动化,当检测到ECS1猎取不到数据的时候马上操作ECS3标记后端为ECS1的apache为down。保留特别现场。(恳求停止的时候,CPU100%还在)
?
三、现场排查
1、相应的排查方案(想到这些信息需要猎取的,实际上没有严格依据这样的步骤)
1)用htop和top命令监控CPU、内存使用大的进程。先看看哪个进程消耗资源较多,用户态、内核态、内存、IO……同时sar -b查io的历史定时抽样。
2)统计tcp连接数,看看有没有DDOS攻击。netstat -anp |grep tcp |wc -l 。用iftop-i eth1看看通讯。同时用tail -n 1200 /var/log/messages查看内核日志。
3)用pstree查看打开进程,ps aux|wc-l看看有没有特殊多的进程。虽然zabbix监控上说没有,但是我们要检查一下看看有没有特别的进程名字。
4)查看全部容器的资源使用docker stats $(docker ps -a -q),看看能不能从容器上排查。
5)有了“too many open files”的启发,计算打开文件数目lsof|wc -l,依据进程看看ll /proc/PID/fd文件描述符有没有可疑的打开文件、文件描述符。
6)关于用lsof打开文件数找到的线索,排序打开文件找出进程号 lsof -n|awk {print $2}|sort|uniq -c|sort -nr|more
7)关于用lsof打开文件数找到的线索,用lsof -p PID查看进程打开的句柄。直接查看打开的文件。
8)启动容器的时候又总是“open too many files。那就是打开文件数的问题,由于CPU的使用率是CPU的使用时间和空闲时间比,有可能由于打开文件数堵塞而导致CPU都在等待。针对连接数的问题,大不了最终一步试试echo 6553500 /proc/sys/fs/file-max 测试打开文件对CPU的影响。
9)玩意测出来了消耗CPU的进程,可以使用strace最终程序。用户态的函数调用跟踪用「ltrace」,所以这里我们应当用「strace」-p PID
10)从程序里面看到调用系统底层的函数可以跟踪。跟踪操作
您可能关注的文档
最近下载
- 06K105 屋顶自然通风器选用与安装国标 建筑图集 汇编.pdf VIP
- 工程原材料、成品半成品和中间产品抽检措施方案.docx VIP
- 《调研方法》课件.ppt VIP
- 机械制图习题集(机类、近机类)第二版习题参考答案.pdf
- 2026年国家电网招聘之电网计算机考试题库500道及答案【典优】.docx VIP
- 国家开放大学实验学院生活中的法律形考任务(一)_形考任务(一)答案.pdf VIP
- 高中数学课件:242_2-2-3直线的一般式方程.pptx
- 2020数字政府发展指数报告.pdf
- 中国第三方债务调解及催收行业市场调研报告 2021.pdf
- 现代智慧物流产业园项目建议书.pptx VIP
文档评论(0)