文档章节

502错误笔记(php-5.4.45版本)

阿锋zxf
 阿锋zxf
发布于 2016/11/23 11:10
字数 1294
阅读 41
收藏 0

LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法

第一种原因:安装lnmp一键安装包时php没安装成功而出现502 Bad Gateway,从0.9开始只要安装成功或失败都就会有提示。没安装成功一般原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。可以看一下是否存在/usr/local/php/sbin/php-fpm ,如果没有肯定没安装成功(排除)
解决方法:
可以尝试根据lnmp一键安装包中的脚本手动安装一下,看看是什么错误导致的,在网上搜索一下,或者把错误信息发上来。如果实在不会提供按http://lnmp.org/install.html这个安装时的lnmp.log日志文件(可以用winscp登陆下载lnmp.log,压缩并上传到本论坛),没有错误信息我们没法说什么原因。本方法只限于lnmp没安装成功,只要lnmp安装成功了这一项就没可能。

第二种原因:
在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway。php一些模块之间也可能会造成502,如Zend GuardLoader与Opcache,ioncube与Zend GuardLoader等,一般可以通过注释掉一个然后重启php-fpm,然后看是否还502进行排除。(排除)

第三种原因:
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加,如果php已升级到5.3.*以上且使用的是dynamic模式,需要调整pm.min_spare_servers和pm.max_spare_servers的值适当增加。最大值可以按内存xxMB/2/20 的整数来算(内存以MB为单位进行计算,/ 为除,取整数),最小值可以按内存/2/40 的整数来算,可以少点或多大,可以自己调整运行看看,同时pm.max_children也调整为和pm.max_spare_servers的值一样。
也有可能是max_requests值不够用。

(4G内存,我改为:

pm.max_children = 100
pm.start_servers = 90
pm.min_spare_servers = 50
pm.max_spare_servers = 100
request_terminate_timeout = 100
)(pm.start_servers是取pm.min_spare_servers和pm.max_spare_servers的中间值,或者最大值,否则出错


第四种原因:
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300 或直接改成0 不限制,同时还需要修改/usr/local/php/etc/php-fpm.conf 调整request_terminate_timeout的值
/etc/init.d/php-fpm restart重启使其生效(前者300,后者100,暂未知)

第五种原因:
磁盘空间不足,如mysql日志占用大量空间清理一下磁盘上的文件,有部分剩余空间,重启即可恢复。(排除)

第六种原因:
查看php-cgi或php-fpm进程是否在运行

第七种原因:
将nginx.conf里的
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout都调大一点。

第八种可能原因:https://bbs.vpser.net/thread-1654-1-1.html

九、不要按网上找到的教程随便修改配置,网上找到的可能会路径不一样,也可能会导致502或有相关的错误产生,例如网上其他的教程可以使用的是9000端口,而lnmp默认使用socket,你如果按网上的教程设置的端口或socket路径不一样那肯定100% 502无疑。

LNMP默认使用unix套接字,虚拟主机配置文件里 fastcgi_pass参数为unix:/tmp/php-cgi.sock; 需要确保/usr/local/php/etc/php-fpm.cnf 里的设置,php 5.2为<value name=“listen_address”>/tmp/php-cgi.sock</value> php 5.3及以上版本为listen = /tmp/php-cgi.sock ,同时/usr/local/nginx/conf/nginx.conf 及其/usr/local/nginx/conf/vhost/ 下面的虚拟主机配置里的fastcgi_pass  unix:/tmp/php-cgi.sock; 不一致就必定502。


有时候unix套接字模式下可能会502,可以尝试改成tcp/ip的方式 php 5.2下<value name=“listen_address”>/tmp/php-cgi.sock</value>替换为<value name=“listen_address”>127.0.0.1:9000</value>  php 5.3及以上版本listen = /tmp/php-cgi.sock替换为listen = 127.0.0.1:9000,nginx配置文件及虚拟主机配置文件里fastcgi_pass  unix:/tmp/php-cgi.sock;替换为fastcgi_pass  127.0.0.1:9000;  之后重启试试。


十、如果虚拟主机的日志文件过大也可能会造成502问题。
建议定期清空一下虚拟主机的日志文件。

十一、有些程序或者程序的主题有死循环或其他非常占用资源的代码也可能会引起502,可以尝试暂时注释掉可能的主机的配置文件,重启看看是否还会502。

十二、如果以上方法都试过,但还有时会出现502错,可以尝试添加502自动重启脚本:https://bbs.vpser.net/thread-1913-1-1.html

十三、实在找不到原因可以开启slowlog看看慢日志是否有相关有用的信息:https://bbs.vpser.net/viewthread.php?tid=10251&page=1&fromuid=3#pid30582

十四、升级PHP后出现502,可能php没升级成功。
如果是1.0之前的版本升级PHP到5.4或5.5后,可能是因为这个原因:https://bbs.vpser.net/thread-10763-1-1.html

十五、CentOS 6 下,wordpress访问后台、安装wp、安装插件报502错误的解决方法:https://bbs.vpser.net/thread-10767-1-1.html

© 著作权归作者所有

阿锋zxf
粉丝 9
博文 219
码字总数 218257
作品 0
深圳
程序员
私信 提问
CentOS yum 升级php(5.4-5.5)

1.检查当前安装的 PHP 包 删除上面列出来的所有已安装的包 ---2.CentOS 5.x CentOS 6.x CentOS 7.x 如果想删除上面安装的包, 重新安装 上面搜索到的包即可 3.运行 注:如果想升级到,把上面的换...

zcqshine
2016/09/21
73
0
Nginx出现502和504错误解决方法

公司一台测试服务器,最近出现504和502问题:(环境LNMP,php编译安装,Fastcgi模式),问题不难解决,但这里分享一下自己的排查思路和处理问题的方式。 504 Gateway Time-out,nginx 502 bad g...

阚小看
2017/07/07
0
0
2018-3-15 Linux学习笔记

12.13 Nginx防盗链 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 配置如下: location ~ ^.+.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expir......

XiaoluHuang
01/07
0
0
nginx 502 Bad Gateway 错误解决办法

nginx 502 Bad Gateway 错误解决办法 一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是小编搜集整理的一些Nginx 502错误的排查方法,供参考: ...

coolner
2018/06/26
0
0
解决:502 bad gateway

502 Bad Gateway服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。 解决办法是:再刷新一下网页或清理一下电脑的缓冲文件在打开你想打开的网页就好了....

Junn
2013/07/28
68.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈prototype原型模式

一、原型模式简介 原型(Prototype)模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例。使用原型模式创建的实例,具有与原型一样的数据。 原型模式的特点: 1、由原型对...

青衣霓裳
21分钟前
6
0
shell mysql 备份

#!/bin/bash time2=$(date "+%Y-%m-%d-%H:%M:%S") /usr/local/mysql/bin/mysqldump -uroot -p ad > /usr/local/mysql/backup/"$time2".sql 变量引用原来是这么用的。......

奋斗的小牛
29分钟前
4
0
Jmeter监控Linux服务器操作

系统:Win7 64位 工具:Jmeter 4.0 要准备好的插件:JMeterPlugins-Standard-1.4.0,ServerAgent-2.2.1 解压JMeterPlugins-Standard-1.4.0.zip,将其中\lib\ext\JMeterPlugins-Standard.jar......

魔鬼妹子
29分钟前
5
0
系列文章:云原生Kubernetes日志落地方案

在Logging这块做了几年,最近1年来越来越多的同学来咨询如何为Kubernetes构建一个日志系统或者是来求助在这过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是想把我们这些年积累的经...

Mr_zebra
30分钟前
5
0
入门必备!快速学会用Aspose.Words在表格中插入和删除列!

Aspose.Words For .Net(点击下载)是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft W...

mnrssj
35分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部