• 背景:服务中的应用全部通过docker的方式进行部署,部署的应用有mysql、redis、zookeeper、kafka、elasticsearch、tomcat
  • 问题:将elasticsearch启动后,cpu突然飙升到100%,内存飙升到96%,见下图阿里云控制台截图

  •  排查过程:① 使用top命令,按P,将进程按照cpu使用率进行排序,发现是某个java进程占用96.3%的cpu。但是,过几秒,这个java进程就会消失,同时cpu会降到正常水平,再过几秒会出现另一个高占用率的java进程。导致无法按照传统的方式进行排查。

 ② 由于所有应用都是使用docker部署的,所以考虑使用docker stats命令排查。发现es应用的cpu使用率变化非常剧烈,0 % 或 93%。通过docker logs -f c_es命令,查看c_es的日志,发现es在不断地重启。将c_es停掉,问题得到解决。

 

  •  问题出现原因:在创建c_es服务器时,使用了–restart=always 参数,意味着容器如果退出,会一直重启。如果启动容器时都失败了,那么会进入失败-重启这个死循环。因此,–restart=always参数应该谨慎使用。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐