背景:
业务反馈近期管理后台某些功能经常出现点击按钮后,长时间没有反应,技术侧排查是接口504了,依据此问题进行了以下优化。
解决流程:
1、504问题分析
网关超时(Gateway timeout),504官方解释,但网关超时对应到具体使用场景又是什么原因导致的呢?NGINX+PHP-FPM 504一般反应到具体场景就是NGINX等待php-fpm相应超过了NGINX(通过fastcgi管理以及和php-fpm通信)最大等待时间。本次导致504原因排查某一php进程执行时间较长,超过了fastcgi等待相应时间。
2、解决调试
nginx.conf
重要参数:
# fastcgi进程向nginx进程发送response的整个过程的超时时间
fastcgi_read_timeout
# 指定nginx与后端fastcgi server连接超时时间
fastcgi_connect_timeout
# nginx进程向fastcgi进程发送request的整个过程的超时时间
fastcgi_send_timeout 600;
#发送响应超时时间,单位秒,服务端向客户端发送数据包,规定时间内客户端没收到,则超时
send_timeout 600;
php.ini
max_execution_time 最大执行时间
总结
以上为nginx与php-fpm实际调优问题解决总结,后续会进一步整理相关调优配置解读