问题描述
如机器的CPU使用率过高(如接近100%),如何进行排查,找出使用率高的进程跟函数
问题分析
可以通过 top、ps、pidstat 等工具,来找到CPU 使用率较高(比如 100% )的进程。然后,可以使用perf来查找占用率高的函数。
解决方案
1、使用top进行查看机器占用情况,如下: 我们可以发现,系统中有几个 php-fpm 进程的 CPU 使用率加起来接近 200%;而每个 CPU 的用户使用率(us)也已经超过了 99%,接近饱和。 这样,可以确认用户空间的 php-fpm 进程,导致 CPU 使用率接近饱和。 2、已经确认导致用户CPU使用率升高的进程,继续确认进程中导致CPU利用率升高的具体原因。 我们可以使用perf top,来实时显示占用 CPU 时钟最多的函数,如下:
perf top -g -p 15157
根据上面信息,可以发现php-fpm,再展开 php-fpm 的调用关系,可以发现最终定位到sqrt和add_function。 这样我们找到了导致用户CPU使用率上升的原因。 如果您有其他问题,欢迎您联系火山引擎技术支持服务