触类旁通,从502错误看Nginx常见故障与修复

作者 : 开心源码 本文共1587个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共155人阅读

众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡、反向代理商等服务,使用过程中可能由于对Nginx工作原理、变量含义、参数大小等问题的了解错误,导致Nginx工作异常。

因而,本文将从一个Nginx错误代码502引发的故障入手,谈谈如何分析和修复常见的Nginx异常。

故障简述

某一天游戏客服忽然反应说,游戏x区出现502 Bad Gateway,于是上服务器进行检查

触类旁通,从502错误看Nginx常见故障与修复

故障介绍

这个网页游戏区是由三台腾讯云服务器提供的服务。

172.16.0.5Nginx反向代理商
172.16.0.8MDB+WEB
172.16.0.16SDB+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。

64

清楚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

触类旁通,从502错误看Nginx常见故障与修复

经验教训

忽略对缓存的调优,针对内存大小进行调优

引申

上面详情了Nginx 502错误的可能起因和处理办法,但实际工作中,我们遇到的可不止这么一点。于是,由此引申出去的是,针对那些Nginx常见错误如何去排查和处理。

  • 403错误

403是很常见的错误代码,一般就是未受权被禁止访问的意思。

可能的起因有两种:

  1. Nginx程序客户无权限访问web目录文件

  2. Nginx需要访问目录,但是autoindex选项被关闭

修复方法:

  1. 授予Nginx程序客户权限读取web目录文件

  2. 设置autoindex目录为on

  • 504错误

Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。

Nginx 504 Gateway Time-out一般与Nginx.conf的设置有关。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 触类旁通,从502错误看Nginx常见故障与修复

发表回复