这是第二次遇到该问题了,上次解决后因为没有记录,结果这次遇到后又得重新查找解决方法。记忆力严重减退了啊,还是要保持边学边记录的习惯

sad.gif

网站在正常运行时是没有问题的,但是在使用xdebug进行远程调试时,可能会因为单步调试,查看内存,分析数据等情况耗时太长,导致页面出现502。这时候虽然还可以进行单步调试,但是已经看不到内存数据了(因为进程已经结束)。于是又得重新调试,调试过程中仍然无法避免调试时间过长,页面继续502。。。

观察了下页面502的响应时长,发现每次都是30s过一点。猜测可能是服务器的配置文件设置了30s的超时时间,于是依次查找了nginx.conf,php-fpm.conf,php.ini(这三个文件原先使用默认配置)。发现nginx.conf里没有30s的配置,php-fpm.conf和php.ini里都有30s的配置。最后实验得出结论:只需要修改php-fpm.conf的request_terminate_timeout值就可以解决超时页面显示502的问题。

php-fpm.conf配置说明

; The timeout for serving a single request after which the worker process will

; be killed. This option should be used when the 'max_execution_time' ini option

; does not stop script execution for some reason. A value of '0' means 'off'.

; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)

; Default Value: 0

request_terminate_timeout = 0

php.in配置说明

; Maximum execution time of each script, in seconds

; http://php.net/max-execution-time

; Note: This directive is hardcoded to 0 for the CLI SAPI

max_execution_time = 30

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐