网站首页 > 技术教程 正文
众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡、反向代理等服务,使用过程中可能因为对Nginx工作原理、变量含义、参数大小等问题的理解错误,导致Nginx工作异常。
因此,本文将从一个Nginx错误代码502引发的故障入手,谈谈如何分析和修复常见的Nginx异常。
故障简述
某一天游戏客服突然反应说,游戏x区出现502 Bad Gateway,于是上服务器进行检查
故障详情
这个网页游戏区是由三台腾讯云服务器提供的服务。
| 172.16.0.5 | Nginx反向代理 | 
| 172.16.0.8 | MDB+WEB | 
| 172.16.0.16 | SDB+WEB | 
172.16.0.5是一台调度器,后端两台服务器采用lnmp+memcached架构。每过一段时间玩家通过nginx转发机登录会报错如上图502错误,可是后端服务器访问正常,当我重启后端memcached之后,转发机恢复正常
处理过程
nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。所以我着重检查了php-fpm进程。将php-fpm进程调至64。
<value name="max_children">64</value>
清楚memcahced缓存之后恢复正常,可适当观察一段时间,前置代理机又会出现502错误,这就让人很头疼了。
看来调试php-fpm不管用,不是解决方法,不是原因所在。
进一步排查。502错误是由于后端无法正常提供服务造成的,所以敢断定一定是后端的问题。
我们进行内核优化,sysctl.conf中添加如下几行,
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 512
观察一段时间后没有结果依然不尽人意。后来想到了每当我重启memcached时候就会恢复正常。于是就把焦点转移到了memcahced上。由于游戏程序使用了memcached,关闭此服务,游戏程序会报错,所以我们决定对他进行调优。也只有这样一步一步排查了。
针对有8G内存的云主机上,在memcached启动脚本中修改了启动内存参数为256M,默认是64M,然后重启memcached,发现前置代理机恢复正常再也没有出现过502报错。
free -m
total used free shared buffers cached
Mem: 7870 6728 1141 32 151 2277
-/+ buffers/cache: 4299 3570
Swap: 0 0 0
经验教训
忽略对缓存的调优,针对内存大小进行调优
引申
上面介绍了Nginx 502错误的可能原因和解决办法,但实际工作中,我们遇到的可不止这么一点。于是,由此引申出去的是,针对那些Nginx常见错误如何去排查和解决。
- 403错误 
403是很常见的错误代码,一般就是未授权被禁止访问的意思。
可能的原因有两种:
- Nginx程序用户无权限访问web目录文件 
- Nginx需要访问目录,但是autoindex选项被关闭 
修复方法:
- 授予Nginx程序用户权限读取web目录文件 
- 设置autoindex目录为on 
- 504错误 
Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。
Nginx 504 Gateway Time-out一般与Nginx.conf的设置有关。
猜你喜欢
- 2024-10-09 Nginx实现高可用(一)——干货(nginx如何实现高可用)
- 2024-10-09 MAMP部署项目报403和404错误,如何解决?
- 2024-10-09 网站服务器租用预防CC攻击的方法(网站服务器租赁需要什么手续)
- 2024-10-09 Nginx防盗链(nginx防盗链 referer)
- 2024-10-09 使用 Nginx 一定要用好 444 状态码
- 2024-10-09 渗透测试中403/401页面绕过的思路
- 2024-10-09 Nginx-包教包会-进阶(nginx详细教程)
- 2024-09-10 16《Nginx 入门教程》Nginx防盗链配置
- 2024-09-10 《前端运维》二、Nginx-3静态资源服务、跨域与其他
- 2024-09-10 前端也要知道的 Nginx 知识(nginx前端配置还是后端配置)
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
- 
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
 
- 标签列表
- 
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
 

本文暂时没有评论,来添加一个吧(●'◡'●)