Yesterday, a program needs to export 500 data, the result found that 150 is, Nginx reported 504 Gateway timeout error
After observation, it was found that about 30 seconds timed out, the execution time in php.ini is 300 seconds:
Copy Code code as follows:
Check the related configuration of nginx, no fruit.
wrote a test page of PHP to be tested again:
Copy Code code as follows:
Echo ' AAA ';
Set_time_limit (0);
Sleep (40);
echo ' AA ';
Still timeout, you can determine set_time_limit This function is not effective.
Again check php-fcgi configuration php-fpm.conf, the following this setting is suspected to have a problem:
Copy Code code as follows:
<value name= "Request_terminate_timeout" >30s</value>
Check official documents: Http://php-fpm.org/wiki/Configuration_File
Copy Code code as follows:
Request_terminate_timeout-the timeout (in seconds) for serving a single request after the which the worker process would be t Erminated. Should be used as ' max_execution_time ' ini option does not stop script execution for some reason. Default: "5s". Note: ' 0s ' means ' off '
The effect is that PHP set_time_limit set in time if the PHP is not finished, then go to the configuration here, that is, request_terminate_timeout=30 seconds.
First this parameter changed and PHP set_time_limit value, are 300 seconds, not yet, do not understand why, if the master know please enlighten.
Finally put the request_terminate_timeout closed, the program can be performed properly, problem resolution:
Copy Code code as follows:
<value name= "Request_terminate_timeout" >0s</value>
Add: If the front-end Nginx server uses upstream load balancing, the following parameters in that load-balancing configuration need to be modified accordingly:
Copy Code code as follows:
Proxy_connect_timeout 300s;
Proxy_send_timeout 300s;
Proxy_read_timeout 300s;