共计 737 个字符,预计需要花费 2 分钟才能阅读完成。
一般在访问某些网站或者我们在做本地测试的时候,服务器突然返回 502 Bad Gateway Nginx,
这种问题相信大家也遇到不少了,
这里我再总结下几种处理方式,有缺少或者错误的希望有大神能指出。
一般的思维:502. 说明服务器没有响应,也就是我们的 web 服务器没有接到有效的信息导致的。
产生错误的原因主要是:连接超时,我们向服务器发送请求由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错。
问题:nginx 不断返回 502 等错误。
一般遇到这个问题第一反应就是有可能 Nginx 挂了 (几乎不可能),
所以查看 nginx 进程,发现运行正常,
然后在查看 nginx 日志,也没有任何问题。
有时候我们会从 nginx 日志中发现大量的相同的 ip 请求,
这种一般都是引起服务挂掉,或者响应不及时的非法请求。
一般都是别人攻击你了。
这种也很好解决,加 ip 黑名单,黑名单中的 ip 拒绝提供服务。
我们项目是在拦截器里面配置白名单和黑名单的,这种做法可能也是比较常用的办法。
也可以在 nginx 里面配置黑名单,拒绝访问。
配置 ip 黑名单的方法是多种多样的,适合自己的就行。
过多的请求可能导致服务宕机,直接重启也是可以解决的,但是没有找到问题的根本原因。
一般查看服务状态有这么几个 linux 常用命令。
top 命令:可以查看 cpu 的使用率,如果使用率过高,也可以跟进具体是哪个线程。
https://blog.csdn.net/qq_20545159/article/details/77775122
iotop 命令:可以查看磁盘 io 的使用情况。
如果 io 特别大,一般都是内存爆了,才会直接和硬盘打交道,才会导致 io 飙升。
用 free 查看内存:如果 100%,停掉了没用的测试服务,停掉测试服务后,重启平台,一切正常。