解决方案及措施

解决方案及措施,第1张

PHP出现502解决方案

NGX出现502的原因有很多,但大部分可以归结为资源不足。换句话说,如果php-fpm的后端开发出现任何问题,nginx都会向后端php-fpm进程发送相应的手机客户端请求。但是由于php-fpm进程的问题,php代码无法被正确解析,最终发送到手机客户端502是不正确的。

网络服务器之所以出现502,是因为网络连接超时,大家都向服务器发送请求。因为今天网络服务器连接太多,网络服务器级别无法给出所有正常响应,导致这种错误。所以,如果你的网络服务器并发量很大,只能先升级设备,然后按照以下方法升级,才能得到更强的实用效果;但是如果你的高并发不大但是出现了502,一般可以总结为设备的问题和脚本请求超时的问题。

1.PHP.ini的memory_limit太小

(如果有一些php程序进程必须占用巨大的运行内存,这一点必须注意)

2。php-fpm.conf中max_children或max_requests的设置不科学

(短时间设置后,没有足够的cgi进程来解决请求。设定一个交流会后,会出现一段时间有回应一切正常,然后很长时间有回应的情况。一般来说,孩子是按照运行内存来计算的,比如2GB设置64和2G128。这个根据具体情况自主调整。另外,查询当前PHPFastCGI进程数是否足够的指令是:

Netstat-anpo|grephp-cgi|wc-l如果特定应用程序的FastCGI进程数;接近预设;FastCGI进程的数量表明:FastCGI进程的数量;不足,必须扩大。)

3。查询nginx的错误日志

当发现pstream在读取来自上游的响应头时发送了太大的头时,检查客户端头缓冲区和fastcgi缓冲区大小是否太小,是否可以设置为32K。


4。PHP程序运行时间过长,请求超时。检查nginx和fastcgi中的各种超时设置。

nginx:

fastcgi_connect_timeout300

fastcgi_send_timeout300

fastcgi_read_timeout300

keepalive_timeout

php-fpm:

请求_终止_超时=300;

php.ini:

max_execution_time=300


但是request_terminate_timeout的主参数会立即杀死php进程,然后重启php进程,这样前端开发nginx会返回104:连接被peer重置,最好设置为request_terminate_timeout=0;但最重要的是在程序流中设置请求超时,而不是套用php-fpm的request_terminate_timeout。


5.php-fpm主参数max_requests

主参数表示每个子进程在被关闭之前可以解决的最大请求数。在很多结算请求下,如果这个值的设置太小,往往会导致孩子自杀而创建,这样会耗费大量的时间。如果此时所有的孩子都自杀了,那么在重建之前就没有孩子来响应请求了,所以502。该值可以设置为更大或0[无穷大]。

6。提高态度。linux内核中打开的文件总数

能够应用此命令(它必须是根帐户)

echo'ulimit-HSn65536'>;>/etc/profile

echo'ulimit-HSn65536'>;>/etc/rc.本地

来源/etc/配置文件

7。缓存文件设置很小

或者将设备升级到nginx.conf

proxy_buffer_size64k
proxy_buffers512k;
proxy_busy_buffers_size129k;

8。遇到502的解决方法:

调整php和nginx的积压,Nginx和php的积压是一样的。例如:backlog=1000000


以上类似于常见的502问题及其解决方法。其实解决问题最好的办法就是看看nginx和fastcgi的errorlog。

最后用网名做个总结:php-cgi进程数量不足,php实现时间较长,或者php-cgi进程已死,502不正确。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/784146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存