The reason why the server appears 502 is that the connection has timed out. We sent a request to the server. Because the server currently has too many connections, the server cannot give a normal response, resulting in such an error.
So if your server has a very large concurrency, you can only add more machines first, and then optimize in the following ways to achieve better results; but if you have a small concurrency but get 502, it can generally be attributed to a configuration problem. , script timeout problem.
1. The number of php-fpm processes is not enough
Use netstat -napo | grep "php-fpm" | wc -l to check the current number of fastcgi processes. If the number is close to the upper limit configured in conf, you need to increase the number of processes.
But you can’t increase it endlessly. You can adjust the number of php-fpm sub-processes to 100 or more according to the server memory. On a server with 4G memory, 200 is enough.
2. Increase the number of files opened by the Linux kernel
You can use these commands (must be the root account)
echo 'ulimit -HSn 65536'>> /etc/profile echo 'ulimit -HSn 65536'>> /etc/rc.local source /etc/profile
3. Script execution time timeout
If the script waits for a long time without returning for some reason, resulting in new requests not being processed, you can appropriately adjust the following configuration.
nginx.conf The main contents are as follows:
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
php-fpm.conf If the contents are as follows:
request_terminate_timeout =10s
4. The cache setting is relatively small
Modify or add configuration to nginx.conf
proxy_buffer_size 64k; proxy_buffers 512k; proxy_busy_buffers_size 128k;
Recommended tutorial: PHP video tutorial
The above is the detailed content of What is the problem with php502?. For more information, please follow other related articles on the PHP Chinese website!