本文最后更新于 1101 天前,其中的信息可能已经有所发展或是发生改变。
正文
近期ssh连不上服务器,找服务器厂商客服得知是cpu高导致的,但是没法看到进程信息,不清楚是哪个进程导致的。
分析了下,服务器上的应用都是docker部署的,而最近部署了监控服务赫兹跳动,就出现这个问题了。于是对该容器进行cpu资源限制,看看能否解决。
服务器是4核心的,通过--cpus 1
限制监控服务容器最多使用“一核心”,也就是100%cpu利用率,总共是400%。注意这里不会真的使用某一个cpu核心,操作系统会调度到每个cpu核心,也就是可能出现4个核心,每个占用25%。
如果需要指定容器使用哪些物理cpu核心,可通过cpuset-cpus
指定。
验证
可以使用stress工具来压测CPU和内存,也可以使用简单的方法:重启容器,同时立即通过docker stats
查看容器的资源使用情况。通过运行top命令,再按数字1,可以查看cpu每核心使用情况。
吐槽
为什么使用年轻的开源项目:赫兹跳动呢?
最开始想对服务器、docker做下监控,搭建了一套监控系统:prometheus+grafana,再去配置各种监控数据源,例如exporter。太费劲了,搞了几天。
后来想监控应用,挂了就邮件告警,但不想用之前那一套。又尝试了zabbix,好家伙,都不是省油的灯,整个下来花了一天。
再后来想监控其他应用,还有数据库。但也不想用前面那些庞大的东西(说出来你可能不信,监控服务比我的应用还占资源。。。)。于是尝试新的国产监控服务:赫兹跳动,介绍中有句话很应景:“中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,登录即可免费开始。”