Nginx中错误提示:502 Bad Gateway解决办法

php-fpm支持的php-cgi

修改php-fpm 进程数在/usr/local/php/etc/php-fpm.conf 查找max_children 将后面的值修改成你要设置的值就可以

 代码如下 复制代码

#vim  /usr/local/php/etc/php-fpm.conf

<value name="max_children">4</value>       

#max_children表示php-cgi的处理进程,设置max_children也需要根据服务器的性能进行设定,增大进程数,内存占用

也会相应增大,正常情况下每个php-cgi所耗费的内存在20M左右

 代码如下 复制代码

<value name="request_terminate_timeout">44s</value>

<value name="process_control_timeout">44s</value>

<value name=”style”>apache-like </value>   

#因为php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之一

,因此可以将php-fpm的处理方式改成apache模式

Nginx 502 Bad Gateway错误触发条件

Nginx 502的触发条件

502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置

指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况

拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写

上的:

proxy_next_upstream error timeout invalid_header http_500 http_503;

不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本

来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错

误,我实在没空跟他们解释502的原理 了……

503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还

是有必要保留的。

解决办法

遇到502问题,可以优先考虑按照以下两个步骤去解决。

1、查看当前的PHP FastCGI进程数是否够用:

netstat -anpo | grep “php-cgi” | wc -l

如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大

2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例

如:

 代码如下 复制代码

……
http
{
……
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
……

php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,原来是PHP的内

存不足了。

按照官方的答案,排查了相关的可能,并结合了网友的答案,得出了下面的解决办法。

1、查看php fastcgi的进程数(max_children值)
代码:netstat -anpo | grep “php-cgi” | wc -l
5(假如显示5)
2、查看当前进程
代码:top
观察fastcgi进程数,假如使用的进程数等于或高于5个,说明需要增加(根据你机器实际状况而定)
3、调整/usr/local/php/etc/php-fpm.conf 的相关设置

 代码如下 复制代码
<value name=”max_children”>10</value>
<value name=”request_terminate_timeout”>60s</value>

max_children最多10个进程,按照每个进程20MB内存,最多200MB。
request_terminate_timeout执行的时间为60秒,也就是1分钟。

时间: 2024-10-06 03:56:37

Nginx中错误提示:502 Bad Gateway解决办法的相关文章

nginx安装wordpress 502 Bad Gateway解决办法

wordpress 502 Bad Gateway解决办法 首先是更改php-fpm的几处配置: /www/wdlinux/php/etc/php-fpm.conf /www/wdlinux/etc/php-fpm.conf 把max_children由之前的10改为现在的30,这样就可以保证 有充足的php-cgi进程可以被使用: 把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程 处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率

ubuntu中laravel提示缺少mcrypt扩展解决办法

mcrypt是一个加密的扩展了,在php中如果要使用此加密就必须安装mcrypt扩展了,下面我们来看看在ubuntu中laravel提示缺少mcrypt扩展解决办法,希望下文对你有帮助. 解决办法. sudo apt-get install php5-mcrypt sudo mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available sudo php5enmod mcrypt service apache2 restart 上面的方法不知

nginx在post大量字段时出现 502 Bad Gateway解决办法

今天遇到一个奇怪的问题,在提交表单时直接就出现 502 Bad Gateway! 开始怀疑是程序问题,后来检查程序正常,发现post字段数大于1000时就出现502 Bad Gateway 而不超过1000时就正常,Google了下.发现有提到 php.ini里配置项 max_input_vars 默认没有开启,默认值是1000 于是修改 max_input_vars为自己适合的值. 修改后重启php service php-fpm stop service php-fpm start 再次提交

Win7用浏览器打开网页提示502 Bad Gateway错误的三种解决方法

Win7用浏览器打开网页提示502 Bad Gateway错误的三种解决方法   方法一.关闭代理 1.首先可能是我们浏览器使用了代理,我们打开桌面的浏览器找到右上角的工具打开,在下拉菜单中找到代理服务器选项; 2.然后在弹出的代理服务器选项中,选择不使用代理的选项在前面打勾,然后重启浏览器即可. 方法二:关闭不必要的程序 1.出现这种情况的可能是被一些程序拦截导致的,我们右键点击电脑下方任务栏的空白区域; 2.然后在下拉菜单中找到任务管理器,点击进入任务管理器界面; 3.然后在任务管理器中找到

界面-java中错误提示需要class、interface或enum怎么解决

问题描述 java中错误提示需要class.interface或enum怎么解决 package CarSale.CarUI; import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; class CarUI extends Frame { public static void main(String [] args) throws SQLException{ { String sql

office2013错误提示1406/1402/1920解决方法

在安装Office2013的过程中可能会遇到各种错误提示,其中最常见的是1406.1920.1403,今天绿茶小编带来了office2013错误提示1406/1402/1920解决方法,如果大家在安装过程中遇到了这三个的其中之一,那么可以参考一下下面这篇文章. ----安装错误1406解决方法 启动注册表编辑器后,找到这3个键值,尝试手动删除,如果手动删除仍然提示拒绝访问,可以尝试下面步骤: 1.右键单击这个项目,选择权限. 2.在弹出的对话框中,点击高级. 3.在弹出的对话框中,切换到所有者选

在ASP.net中的UpdatePanel,弹窗失败解决办法

原文:在ASP.net中的UpdatePanel,弹窗失败解决办法 最开始我用: Response.Write("<script>alert('和哈呵呵呵呵呵呵!')</script>"); 在没有UpdatePanel时,这个有效,能够正确弹出提示窗口. 后面,页面改进,加上局部刷新后,该方式失效了.探索出新的方式:   ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(),

卸载重装搜狗输入法,总是提示请重启的解决办法

  卸载重装搜狗输入法,总是提示请重启的解决办法           卸载重装输入法后,总是出现这个提示: 问题原因: 这个是因为有些用户的注册表权限设置,不是所有人都可以删除项目,sogouinput的项目之前没有删除. 注册表的路径记录的还是错的值,新安装后,要做判断发现错误,就会出现这个提示. 解决方案: 卸载后,删除错误的值 具体操作如下: 1. 打开注册表,打开方式为:开始--运行,输入 regedit,回车后,打开的就是注册表编辑器. ps:如果这里不能删除,点击右键 权限,将所有人

AndroidGUI27中findViewById返回null的快速解决办法_Android

 在用Eclipse进行Android的界面开发,通过findViewById试图获取界面元素对象时,该方法有时候返回null,造成这种情况主要有以下两种情形. 第一种情形是最普通的. 比如main.xml如下,其中有一个ListView,其id为lv_contactbook <?xml version="1.0"encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.