短视频源码开发之解决服务器请求502报错问题
有时候我们在访问短视频源码后台服务时,会出现数据响应时间过长,并返回返回502错误的情况。这种情况有可能是因为php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉导致的。今天我们就来分析一下,短视频源码请求服务出现502报错,该如何解决。
一、502问题解决方案参考
1、检查PHP设置
修改/usr/local/php/etc/php-fpm.conf request_terminate_timeout = 100 ,把100改成5; php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 为300;
2、检查FastCGI进程是否已经启动
ps aux | grep php
查看是否启动了php-fpm服务;
3、判断FastCGI worker进程数是否不够
运行linux命令:
netstat -anpo | grep “php-cgi” | wc -l
判断是否接近FastCGI进程,接近配置文件中设置的数值,表明短视频源码设置的worker进程数太少;
4、FastCGI执行时间过长
PHP程序执行时间超过了Nginx等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,根据实际情况调高以下参数值:
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
5、FastCGI Buffer不够
前端缓冲限制,可以调整短视频源码的缓冲参数
fastcgi_buffer_size 64k; fastcgi_buffers 8 64k;
6、FastCGI 缓冲区设置过小
首先查找nginx日志文件,目录/var/log/nginx,在日志中发现了如下错误:
[error] 15421#0: *16 upstream sent too big header while reading response header from upstream
意思是nginx缓冲区bug造成,网站页面占用缓冲区可能过大,增加缓冲区可以解决Nginx 502 Bad Gateway,方法如下:
http { ... fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; ... }
7、代理缓冲区设置过小(使用了nginx反向代理的情况)
如果header过大,超出了默认的1k,就会引发upstream sent too big header;问题解决方案如下:
server { listen 80; server_name *.test.com; location / { ###############添加这3行 proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; ###############添加这3行 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ............ }
8、默认php-cgi的进程数设置过少
在安装好并使用的过程中出现502问题,是因为默认php-cgi进程是5个,导致进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf ,将其中的max_children的值适当增加。
php-fpm主要调整以下几个参数:
pm = dynamic 如何控制子进程,选项有static和dynamic
pm.max_children:静态方式下开启的php-fpm进程数量
pm.max_requests:php-fpm子进程能处理的最大请求数
pm.start_servers:动态方式下的起始php-fpm进程数量
pm.min_spare_servers:动态方式下的最小php-fpm进程数
pm.max_spare_servers:动态方式下的最大php-fpm进程数量
这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。
需要注意的是,设置”max_children”要根据短视频源码服务器的性能进行设定。数量也可以根据内存/30M进行设置,比如8GB内存可以设置为100,那么php-fpm耗费的内存就能控制在 2G-3G的样子。
以上就是短视频源码解决502问题的调整方案参考,改完后记得重启nginx php-fpm使配置生效。
声明:以上内容为云豹科技原创,未经作者本人同意,禁止转载,否则将追究相关法律责任www.yunbaokj.com