惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园_首页
H
Help Net Security
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
The Cloudflare Blog
腾讯CDC
Jina AI
Jina AI
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
爱范儿
爱范儿
N
Netflix TechBlog - Medium
F
Fortinet All Blogs

大葱博客

WordPress 解决国内 Gravatar 头像被墙无法显示问题,另附 Gravatar 头像国内镜像源地址大全 宝塔搭建Chatgpt微信机器人 - 大葱博客 微信支付商户V3证书生成方式 - 大葱博客 iPhone苹果ios微信分身多开操作教程 - 大葱博客 WordPress 优化加载速度方法 - 大葱博客 罗永浩直播带货糊了,你的机会才算来了! - 大葱博客 罗永浩直播翻车,赚大钱盆满钵满 - 大葱博客 如何解决Mac OS 10.13系统待机掉电多、能耗高问题? - 大葱博客 ofo退押金排队超千万人,这次还能活下去吗? - 大葱博客
Nginx服务器CPU负载高的排查及解决方法 - 大葱博客
大葱 · 2022-04-24 · via 大葱博客

工作使我快乐,这句话说出来我自己都不信,工作中总会有解决不完的问题,往往前一个Bug解决了,后一个Bug就接踵而来,我们不是在解决Bug,就是在解决Bug的路上。但是,也正因为这种不断的解决问题,不断的突破,才对这份工作有了乐趣,并为之努力。
其实对于每一个项目来说,她就像是我们的“孩子”一样,总想让他变得好一点,再好一点…

背景

为了杜绝不良网名对我们的服务器IP进行直接访问,我在nginx配置那里做了一些“小小的”调整,如下:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name _;

rewrite ^(.*)https://zzzdc.com permanent;
}

大家估计也看出来了,就是我想让不明地址、IP访问都跳转到我们主站上。

表现

重启nginx服务后,我们服务器上所有存在的网站访问就出问题了。具体表现为:只要访问任何一个存放在服务器上的网站,服务器的CPU立马高负载(15~20%),导致再次访问时会进入一直pedding状态。
这可不行啊,要知道我们所有的网站都是在百度上投放信息流广告的,一旦网站出现问题,百度就会据登广告,这将会给广告商带来大大的损失,于是我放下了手头的工作,马上进行了排查。

过程

首先,我以为是近期更新网站时代码里某一处出了错误,于是我关掉了进行更新过的插件,然而,问题依旧存在;
然后,不是代码的问题,那可能是php-fpm进程太多导致的?查看了一下php-fpm的错误日志,都是一些Notice,并没有Erroor,所以这里也可以排除掉;
那么,再就是用户量太大?看一下Zabbix监控吧,发现CPU负载从早上10.30开始一直高负荷;那再看一下网站流量吧,从前一天晚上11点开始后就有大量的流量进来,也就是用户量激增到平时的十多倍。
昨晚11点干啥了?就是改nginx的配置了啊,那改了哪一处呢?病原在这儿:

rewrite ^(.*)https://zzzdc.com permanent;

我理解的是他把无效域名和IP都转发到了我们的主战,从而引来了大量的不速之客(大流量),占完了CPU资源,导致后面进来的用户就会pedding状态,把这里改一下:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name _;

return 444
}

总结

工作使我快乐,善待每一次线上版本的修改及理清处理问题的排查思路,今天就到这儿了。