短视频源码开发之解决服务器请求502报错问题

发布来源:云豹科技
发布人:云豹科技
2022-06-30 09:57:05

有时候我们在访问短视频源码后台服务时,会出现数据响应时间过长,并返回返回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

声明:
以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任