该如何定位php-fpm占用cpu高的接口

php版本

php56.40

框架版本

laravel5.6

问题描述?

针对一些慢、占用高的接口优化,
php-fpm中慢日志的接口已经全部迁移到单独的容器中了,
但是本机仍存在一些突然占用cpu很高的php-fpm进程(就是突然占用cpu高但一秒内基本都会释放的),请问有没有什么可以定位这些进程在请求哪个接口的工具或者方案。
看过xhgui ,但似乎只会返回内存占用于cpu占用时间

所以求一种能够满足需求的工具或者方案,最好不仅限于laravel框架,还有存在thinkphp框架

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 11

升级下 laravel版本用 Telescope

1年前 评论
Aroad (楼主) 1年前
Mutoulee

先看看高峰时的并发连接数吧,如果连接数不高,再排查接口。

1年前 评论

如果您的 PHP-FPM 进程占用了过高的 CPU,可以尝试以下几个方法来定位问题:

查看慢日志 在 PHP-FPM 配置文件中开启慢日志功能,并设置阈值,超过阈值的请求会被记录下来。可以根据慢日志来查看哪些接口响应时间过长,进而排查问题。具体操作是在 PHP-FPM 配置文件中添加以下配置:

request_slowlog_timeout = 5s slowlog = /var/log/php-fpm/slow.log 其中 request_slowlog_timeout 表示请求处理时间超过该值的请求会被记录到慢日志中,单位为秒;slowlog 表示慢日志的路径。修改完配置文件后,重启 PHP-FPM 生效。

使用 xhprof 扩展 xhprof 是一个针对 PHP 应用程序的分层代码分析工具,可以分析 PHP 应用程序的性能瓶颈,帮助开发者找出代码中的性能问题。可以使用 xhprof 扩展来对 PHP-FPM 进程进行分析。

安装 xhprof 扩展并启用后,在需要分析的代码中插入 xhprof_enable() 函数来启动分析器。请求结束后可以将生成的分析数据导出到文件或是输出到 Web 页面中,然后再进行分析。关于 xhprof 的具体使用方法可以参考其官方文档。

使用系统工具 可以使用系统自带的 top 或 htop 命令来查看 PHP-FPM 进程的 CPU 使用情况,并找到占用 CPU 高的进程,然后使用 strace 命令或其他调试工具来分析该进程。也可以使用 perf 工具来对进程进行性能分析。

使用第三方工具 比如说 New Relic、Blackfire 等第三方监控工具,它们提供了详细的性能信息,可用于定位 PHP-FPM 进程中的性能问题。

总体而言,一旦定位到高 CPU 的接口,我们需要进行进一步的分析,包括但不限于:

调用的外部服务是否超时或出现连接池满的情况 数据库是否有索引缺失导致的查询效率低下 是否存在循环嵌套、繁重计算等问题 针对不同的情况采取不同的优化策略,逐步提升接口的性能。

1年前 评论
DonnyLiu 1年前

查看 CPU 占用率:使用 top 或 htop 命令查看服务器 CPU 占用率,并找出占用 CPU 最高的进程。通常情况下,PHP-FPM 进程的名称为 php-fpm。

查看 PHP-FPM 进程数:使用 ps 命令查看 PHP-FPM 进程数,并找出占用 CPU 最高的进程。可以使用以下命令查看 PHP-FPM 进程数:ps aux | grep php-fpm

查看 PHP-FPM 日志:使用 PHP-FPM 的错误日志和慢日志,查看是否有接口请求出现异常或者执行时间过长的情况。可以在 PHP-FPM 的配置文件中设置错误日志和慢日志的路径和级别,例如:

error_log = /path/to/php-fpm/error.log slowlog = /path/to/php-fpm/slow.log request_slowlog_timeout = 10s 这样可以记录 PHP-FPM 进程的错误和慢请求,并帮助我们定位问题。

1年前 评论

升级PHP到 7.4 吧

1年前 评论
Aroad (楼主) 1年前

可以监控下PHPfpm状态,配置一下NGINX,看下fpm进程数是不是有大量请求进来不够了,少了就扩设备或者增大进程数

1年前 评论
Aroad (楼主) 1年前
raybon (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!