在Nginx + PHP-FPM这种架构模式下,因为Nginx充当的是反向代理伺服器,而超时大概率是由于PHP-FPM执行PHP脚本导致的超时,所以我们不建议修改Nginx的超时配置,保持默认即可。而我们的重点工作是要检查什么原因导致PHP脚本执行慢的。

那该如何定位问题呢?只能用排除法来一步步排查,现在总结我的经验以供大家参考:

1、开启PHP错误输出

首先我们要保证PHP错误开关是打开的,在php.ini中找到 display_errors 配置项设为 On ,然后重启PHP-FPM使配置生效。

2、检查代码中是否设置了 set_time_limit(0) ,如果没有可以加上这行代码。

3、查看Nginx和PHP-FPM日志,看是否有错误抛出(比如缓冲区超出、PHP进程不够等),如果有则依据错误信息对应解决。

4、找到慢请求URL对应的程序源码,查看是否存在耗时操作,比如说:

  • 程序里请求了外部网路资源导致的超时,如:cURL、file_get_contents之类函数;

  • 死循环;

  • 资料库、Redis链接超时等;

必要时借助xhprof来分析PHP脚本瓶颈。


通过以上步聚基本上是可以定位问题所在的,个人觉得PHP脚本执行慢导致超时的可能性较大。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!


推荐阅读:
相关文章