专注是一种工匠精神

[宝塔]CPU负载 100% 造成502 Bad Gateway 的解决方法

文章目录

因为近期呢常常会遇到这样子的问题,相信很多站长们应该也有可能遇到类似这样的状况,做SEO的当然最不能忍受的就是网站速度变很慢很卡,因为网站速度很卡导致关键词排名下降,得不偿失。

在经营网站的时候,常常会遇到一个过渡期,就是你的网站开始慢慢小有名气时,会让很多不知名的爬虫或伪装UA来访问你的网站,而且绝大部份都不是真实访客(虽然在百度统计或者GA上可以看到流量访问),但那些都是假量,关于伪装搜索引擎爬虫和伪装真实访客的文章,日后会在特别写几篇文章。

 

为什么网站常常造成 502 bad gateway

站长我曾经也是因为这个问题困扰了一阵子,不过可以慢慢发现到,大多数都是一些恶意人士来爬取你的网站,甚至想要对你的网站进行劫持或渗透,这么做很可能就会造成你的网站负荷量越来越大,若万一服务器只是很普通的规格,网站很快就会卡死,造成 502 Bad Gateway。

常见到的原因

  1. 服务器规格不足
  2. WAF(防火墙)无法有效挡住特殊攻击(例如. CC攻击、DDOS)
  3. 伪装UA种类过于繁多,无法100%有效设置黑名单

上述呢,是在你没有充裕资金的情况之下,比较可能常发生的事情(比如站长本身),当然啦,做SEO本身最好还是要懂一些运维,如果说在没有人可以帮助你进行维护的情况之下,要不就是花钱买更好的服务器,要不就是花钱请人帮忙运维,但如果你也是跟站长一样本身没什么预算的话,就是尽量多学点技术吧!

怎么解决 502 Bad Gateway?

刚刚上面有提到CPU 100% 满载状态时,就很有可能造成 502 Bad Gateway,这边就以中国比较知名的运维管理面板「宝塔」来当例子。

宝塔,bt-pannel,运维管理面板

图显示的目前状态已经是解决好一阵子的情形

(Linux 系统为例)当服务器满载状态时,首先我们先到终端下输入:top(见下图)

linux top 指令

可以看到非常多的 php-fpm 进程,每个php进程使用了 CPU 差不多 7% 左右,表示现在是比较正常的状态(以站长本身服务器例子来讲),因为如果是遇到伪装UA来大量访问你的网站,php-fpm 单个最高可以来到40% CPU的使用率,那肯定会造成网站瘫痪(502 Bad Gateway)。

如果在进程中看到有异常的php-fpm,表示很可能就是爬虫,通常这些伪装UA或爬虫都是用Python在执行的,再搭配大量的Proxy IP,就会发生类似网站被DDOS的情况,但目的又跟DDOS不一样,DDOS目的是要让你网站直接瘫痪,而这些伪装UA或爬虫,是为了要采集你网站里的内容,或者要扫你的网站漏洞以便于日后可以渗透。

php-fpm

根据刚刚上面的 php-fpm 进程 单个CPU使用率,大概抓一下百分比,以图为例 7%,然后可以往回看到top指令图示最上面有个 load average 的后面有三组数字,这三组数字代表:1min的平均负载、5min的平均负载、15min的平均负载。

15分钟平均负载只有到5.12(服务器本身是16核),所以长期来看服务器还不需要更换,而在1分钟平均负载也是在5左右。

那么,我们就要从php-fpm 的参数去做调整,我们可以从 max_children(最大子进程)的参数去查看,原本预设参数是根据宝塔内建给的值,如果这时候你对这些都不了解不懂的话,建议你可以从 max_children 预设的值往上加 30%,而 max_spare_servers(保证空闲进程数最大值)可以取 (max_children)*70% 的值,设定好之后按保存,然后记得重启PHP。

(备注:上述做完之后,一定还要持续观察大约10分钟至30分钟左右,看看是否还会发生状况)

文章重点:

使用终端输入 top 指令观察进程状况(Linux)

调整php-fpm参数:max_children、max_spare_servers

通常单个 php-fpm 会消耗 20M 至 30M 的记忆体

看到这里,应该有些头绪了吧,CPU 100% 但是记忆体还很充足,是什么原因呢…..

 

赞(0)
未经允许不得转载:伦客网 » [宝塔]CPU负载 100% 造成502 Bad Gateway 的解决方法

评论 抢沙发

7 + 6 =