当前位置 主页 > 服务器问题 > nginx问题汇总 >

    深入探讨:Nginx 502 Bad Gateway错误的解决方法(2)

    栏目:nginx问题汇总 时间:2018-12-12 16:46


    <value name=”max_children”>10</value>
    <value name=”request_terminate_timeout”>60s</value>
    max_children最多10个进程,按照每个进程20MB内存,最多200MB。
    request_terminate_timeout执行的时间为60秒,也就是1分钟。
    #################################################
    网站运行环境是Nginx +php fastcgi模式的。这几天运行一直不稳定,总是出错,报502错误。
    今天跟以前的同事请教了一下,他告诉我检查一下php-fpm的日志,那里记录了很多有用的信息。
    于是我检查了一下,发现确实有很多报错信息:
    Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200
    如果和nginx.conf : worker_rlimit_nofile 65500; 不一致必须检查,设置重启服务
    Mar 01 14:39:15.881047 [NOTICE] fpm_children_make(), line 352: child 12364 (pool default) started
    Mar 01 14:39:21.715825 [NOTICE] fpm_got_signal(), line 48: received SIGCHLD
    Mar 01 14:39:21.715899 [NOTICE] fpm_children_bury(), line 215: child 11947 (pool default) exited with code 0 after 175.443305 seconds from start

     
    有的报错信息,就好说了,直接上网查信息。
    经过搜索,最后总结出以下几条优化策略:
    1、提升服务器的文件句柄打开打开
    # vi /etc/security/limits.conf 加上
    * soft nofile 65500
    * hard nofile 65500
    2、提升nginx的进程文件打开数
    nginx.conf : worker_rlimit_nofile 65500;
    3、修改php-fpm.conf文件,主要需要修改2处。
    命令 ulimit -n 查看限制的打开文件数,php-fpm.conf 中的选项rlimit_files 确保和此数值一致。
    <value name=”max_requests”>10240</value>
    <value name=”rlimit_files”>65500</value>
    4、
    # vi /etc/sysctl.conf
    底部添加
    fs.file-max=65500
    经过以上修改,重启PHP。/usr/local/webserver/php/sbin/php-fpm restart
    在查看ulimit -n 是否生效,否则重启服务器或者/etc/sysctl.conf、/etc/security/limits.conf的配置生效
    到目前为止还没有出现过以上的报错信息。一切运行正常。