• 前端
  • JS
  • CSS
  • HTML
  • Mysql
  • Linux
  • SVN
  • 环境uedbet官网手机版最新
  • uedbet西甲体育投注详解
  • MAC_BOOK
  • 算法
  • 记一次服务器500错误解决方案
    By skyshappiness Posted 2017-06-28 12:09:52 In

    一、背景

        此问题产生原因比较复杂,主要讲述一下,从几个点入手吧。


    二、解决方案:

        1.uedbet官网手机版最新 proxy

            502错误最通常的出现情况就是后端主机当机。在upstreamuedbet官网手机版最新里有这么一项uedbet官网手机版最新:proxy_next_upstream,这个uedbet官网手机版最新指定了nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。


        2.查看 FastCGI 进程数 :

            ps -fe |grep "php" | grep -v "grep" | wc -l //查看开了多少 fastCGI 进程数

            netstat -anop | grep "php" | grep -v "grep" | wc -l //查看已有多少 fastCGI 处理 TCP 请求

    如果这两个数字 接近 uedbet官网手机版最新项;则说明 uedbet官网手机版最新的 进程数 太少,可适当增加uedbet官网手机版最新进程数。


        3.FastCGI 执行时间过长

            适当增加 fastcgi 执行时间

            fastcgi_connect_timeout 300;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;


        4.缓冲区不足:

            打开 nginx 错误日志: pstream sent too big header while reading response header from upstream

            fastcgi_buffer_size 32k;
            fastcgi_buffers 8 32k;

            client head buffer


        5.响应时间超时:

            查看 php-fpm uedbet官网手机版最新文件中:request_terminate_time

            max_execution_time 最大执行时间,0为无限制


        6.max_children 和 max_requests 联合调优:

            查看 php-fpm 日志:fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200

            max_requests 指明 每一个 children 处理多少请求后便会关闭,默认为 500。php 把请求轮询分发给每一个children,在大流量下,每一个children 达到 max_requests 的时间几乎相同,造成 children 在同一时间关闭。nginx无法将 php 请求交给 php-fpm 处理,因此 CPU 会降低(不处理 PHP,不执行 SQL ),网卡流量也会降低(nginx无响应数据返回给客户端),而负载会升高(children的开启、关闭,nginx 等待 php-fpm )。


        7.阿里云SLB服务

            检查 阿里云SLBuedbet官网手机版最新是否禁用 http put/delete


        8.查看内存、磁盘IO、mysql IO 使用情况

            主要是 php_ini 中 memory_limit 设置,如果偏低的话,适当成倍的调高 uedbet官网手机版最新项即可

            同一时间频繁读写一份文件也会造成此问题出现,适当延长缓存时间或者修改缓存策略

            mysql 大量的读写,产生阻塞,也会产生超时响应,查询缓存、读写分离


        9.代码问题

            如果代码中含有无法调用的函数,也会报500错误,主要查看 php-fpm 的日志


        综上:服务器 500 错误是由多方引起的系统问题,此问题比较恶心,需要运维和开发一起协同完成


        参考资料:

            1.http://www.jianshu.com/p/d028a37890b7

            2.https://yq.aliyun.com/articles/84922

            3.https://yq.aliyun.com/ask/1118

    友情链接
    联系方式
  • 邮箱 / E-mail:121388038@qq.com