访问 LNMP 报 502 Bad Gateway 错误的解决办法
LNMP : Linux + Nginx + MySQL + PHP
Nginx 出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端 PHP-FPM 处理有问题,Nginx 将正确的客户端请求发给了后端的 php-fpm 进程,但是因为 php-fpm 进程的问题导致不能正确解析 php 代码,最终返回给了客户端 502 错误。
Nginx + PHP 出现 502 bad gateway,一般这都不是 Nginx 的问题,而是由于 fastcgi 或者 php 的问题导致的,常见的有以下几种(其实解决问题的最好的方式还是自己去看 nginx 和 fastcgi 的 errorlog ):
1、PHP 的配置文件 php.ini 中的 memory_limit 值设置过小。
如果有个别 php 程序进程需要占用极大内存时这个必须注意.。
2、PHP 的配置文件 php-fpm.conf 中 max_children 值或者 max_requests 值设置不合理
设置过小会因为没有足够的 cgi进程处理请求,设置过大会出现一会儿有响应正常,一会儿等很久才有响应的情况。
一般情况下 max_children 按照内存计算,比如说1G设置64,2G设置为128。这个根据实际情况自行调整。
另外查看当前的 PHP FastCGI 进程数是否够用的命令为:
netstat -anpo |grep “php-cgi” | wc -l
如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
3、查看 Nginx 服务的错误日志
查看 Nginx 服务的错误日志,发现 pstream sent too big header while reading response headerfrom upstream ,则检查client_head_buffer、fastcgi_buffer_size 是否过小,可设置为32K。
4、php 程序执行时间过长而超时,检查 Nginx 和 fastcgi 中各种timeout设置。
nginx 中:
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
keepalive_timeout;
php-fpm 中:
request_terminate_timeout
php.ini中:
max_execution_time
5、PHP-FPM 中 max_requests 参数设置问题
PHP-FPM 有一个参数 max_requests ,该参数指明了每个children最多处理多少个请求后便会被关闭。
在大量处理请求下,如果该值设置过小会导致 children 频繁的自杀和建立而浪费大量时间,
若所有的children差不多都在这个时候自杀,则重建前将没有children响应请求,于是出现502。
可以将该值设置大一些或者是0[无限]。(生产环境不建议设置为 0)
如果你服务器并发量非常大,那只能先增加机器,然后按以下方式优化会取得更好效果;但如果你并发不大却出现502,一般都可以归结为配置问题,脚本超时问题。
访问 LNMP 报 502 Bad Gateway 错误的解决办法的更多相关文章
- nginx报502 bad GateWay错误的解决方法
nginx+php-fpm+mysql的网站,访问nginx的某个页面,报502 GateWay的错误,一般见到此错误,可以判断是php-fpm的问题,而不是nginx的问题.通过监控nginx的错误 ...
- 使用xhprof会在nginx下报502 Bad Gateway错误
使用xhprof会在nginx下报502 Bad Gateway错误 xhprof_enable()xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMO ...
- 阿里云SLB出现502 Bad Gateway 错误排查解决方法
502 Bad Gateway The proxy server received an invalid response from an upstream server. 原本系统是通过一个SLB转 ...
- Nginx 502 Bad Gateway 错误的解决方法
502 bad gateway 的解决方法 通用配置 proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 32k; # ...
- 记32位Oracle客户端登录报12560协议适配器错误的解决办法
国庆买了一台新电脑ThinkPad E431,i5双核CPU,8G内存,硬盘比较坑爹5400转的500G,重点是预装win8的64位简体中文版.大学时买了第一台电脑神舟笔记本,因为神舟电脑便宜,所以没 ...
- [大数据技术]Kettle报OPTION SQL_SELECT_LIMIT=DEFAULT错误的解决办法
百度得到的解决方式都是说mysql通过jdbc链接的时候会进行测试’SET OPTION SQL_SELECT_LIMIT=DEFAULT’,但是5.6以后的版本弃用了set的方式. 我用的MySQL ...
- macOS下加载动态库dylib报"code signature invalid"错误的解决办法
一.现象描述 在macOS上搞开发也有一段时间了,也积攒了一定的经验.然而,今天在替换工程中的一个动态库时还是碰到了一个问题.原来工程中用的是一个静态库,调试时发现有问题就把它替换成了动态库.这本来没 ...
- 访问Harbor报502 Bad Gateway
Harbor启动都是多个容器的,首先查看一下是否有相关容器未启动 docker ps | grep harbor cae340214e57 goharbor/nginx-photon:v1.9.3 & ...
- tp5 url 线上访问 在nginx 上 出现404错误,解决办法(1.80nginx 配置 pathInfo)
对于ThinkPHP的URL访问路劲如:http://域名/index.php/Index/BlogTest/read,原先的Nginx的是不支持的pathinfo路劲的,导致你在thinkPHP ...
随机推荐
- php中的加密解密模块-mcrypt
<?php /* 打开加密算法和模式 */ $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); /* 创建初始向量,并且检测密钥长度 ...
- 答应我,用了这个jupyter插件,别再重复造轮子了
1 简介 在使用Python.R等完成日常任务的过程中,可能会经常书写同样或模式相近的同一段代码,譬如每次使用matplotlib绘制图像的时候可以在开头添加下面两行代码来解决中文乱码等显示问题: p ...
- 08_Python的数据类型
1.数字(整型int 浮点型float 复数complex) 1.数字概述 不可变类型,一旦创建不可修改,不是迭代对象,属于原子型 2.整型数int 概述: 整型数是不带有小数部分的数字,包括自然数, ...
- JVM学习第一天(虚拟机的前世今生与与Java的内存区域)
其实说JVM的时候有很多人会懵, 也很不理解,我会写Java代码就可以了,我干嘛要学这个,其实不是的,学习JVM是很有必要性的; 为什么要了解JVM 1:写出更好,更健壮的Java程序; 2:提高Ja ...
- 推荐掌握Linux shell中这7种运算命令
#常见的算术运算符号 .+.-:加减 .*./.%:乘.除.取余 .**:幂运算 .++.--:增加记减少 .!.&&.||:取反,并且,或 .<,<=,>,=> ...
- 详细教程丨使用Prometheus和Thanos进行高可用K8S监控
本文转自Rancher Labs 介 绍 Prometheus高可用的必要性 在过去的几年里,Kubernetes的采用量增长了数倍.很明显,Kubernetes是容器编排的不二选择.与此同时,Pro ...
- windows软件介绍
基础软件 txt 阅读 NotePad++,方便阅读代码,支持列复制. 全局搜索 Everything 截图 Snipaste 读取图片 Picase.PureRef 其他 置顶窗口 DeskPins ...
- 不光是查找值!"二分搜索"
从有序数组中查找某个值 问题描述:给定长度为n的单调不下降数列a0,…,an-1和一个数k,求满足ai≥k条件的最小的i.不存在则输出n. 限制条件:1≤n≤1060≤a0≤a1≤…≤an-1< ...
- python中faker模块:产生随机数据的模块
#pip install faker #产生各种随机数据的模块 想要运用更多的随机数据,可以百度查找下
- Spring源码系列(三)--spring-aop的基础组件、架构和使用
简介 前面已经讲完 spring-bean( 详见Spring ),这篇博客开始攻克 Spring 的另一个重要模块--spring-aop. spring-aop 可以实现动态代理(底层是使用 JD ...