如何监控PHP入站请求性能?服务器迁移后响应变慢排查
排查方向建议
Web服务器与PHP-FPM层面
- 检查Nginx/Apache配置:对比新旧服务器的连接数限制、KeepAlive参数、缓存策略,新服务器默认配置可能不合理,比如KeepAlive超时过短导致频繁重建连接,或者worker进程数不足拖慢处理速度。
- 给Web服务器日志加上响应时间字段(比如Nginx的
$request_time),对比新旧服务器日志,确认请求在Web服务器端的总耗时,判断是Web到PHP-FPM的延迟,还是网络问题。 - 核对PHP-FPM进程池配置:
pm.max_children、pm.start_servers等参数要匹配新服务器的CPU和内存,进程数不够会导致请求排队;另外pm.max_requests、request_terminate_timeout这类参数如果设置不当,会引发进程频繁重启,增加额外耗时。
网络与系统资源层面
- 测试网络链路:用
ping、traceroute对比新旧服务器的网络延迟,看新服务器是否存在路由绕路、带宽瓶颈的问题。 - 监控系统资源:用
top、htop、vmstat实时查看CPU、内存、磁盘IO,请求高峰时如果磁盘IO过高(比如新服务器存储性能不如旧机器,或者挂载方式有问题)、CPU被其他进程占用,都会拖慢响应。 - 检查TCP参数配置:
net.ipv4.tcp_tw_reuse、net.ipv4.tcp_syncookies这类连接复用相关参数,新服务器默认配置可能未优化,导致TCP连接建立/关闭耗时增加。
数据库与外部依赖层面
- 排查数据库连接:如果请求依赖数据库,用
mysql -h 数据库地址 -e "SELECT 1"测试连接延迟,同时检查数据库连接池大小、缓存设置是否适配新环境,是否存在连接排队的情况。 - 检查外部服务调用:如果代码里有调用外部API或第三方服务,测试这些服务在新环境下的响应时间,确认是否是外部链路变慢导致的总耗时增加。
其他隐藏因素
- 检查安全软件:新服务器可能启用了防火墙、WAF、杀毒软件,这些工具会对请求做额外扫描,增加处理时间,可以临时关闭测试是否有改善。
- 预热文件缓存:新服务器刚迁移,文件系统缓存还没加载频繁访问的PHP脚本、静态资源,导致磁盘读取耗时高。可以多跑几次请求预热缓存,或者用
vmtouch工具手动预热。 - 确认OPcache状态:检查PHP的OPcache是否启用,
opcache.enable、opcache.memory_consumption等配置是否合理,OPcache未开启的话,PHP每次都会重新编译脚本,会大幅增加耗时。
内容的提问来源于stack exchange,提问作者JAMMac
相关产品推荐
相关产品推荐

