首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一早上web服务器被刷爆,我差点被开发同学喷爆……

一早上web服务器被刷爆,我差点被开发同学喷爆……

作者头像
Python运维开发
发布2025-09-29 14:18:18
发布2025-09-29 14:18:18
1190
举报
文章被收录于专栏:Python运维开发Python运维开发

——记一次踩坑记录

那是一个普通工作日的早上,

监控突然炸了,电话预警响个不停,机器人通知也一个劲儿地弹消息。

服务没挂,

网络也正常,

但服务器 CPU 直接干到了 100%!

服务时通时不通,

用户疯狂反馈“加载失败”,

反正——就是用不了。

网络错误:timeout

还没定位完,开发童鞋就来问:“是不是你又把服务弄挂了?” 我:?????

我手都没碰服务器,监控刚响我就在查了!


一查日志!!!

登录服务器检查有没有异常

代码语言:javascript
复制
netstat -an | grep ESTABLISHED | wc -l

发现系统存在大量网络连接,明显不正常。

查看nginx日志

代码语言:javascript
复制
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

看到好几多IP短时间内发起了过万次请求。 第一反应被恶意攻击了,虽然处理起来不复杂,但足够让没准备的人喝一壶的。

我干了啥?

先让服务恢复

1、临时封 IP

代码语言:javascript
复制
location /aaa-api/ {
    deny 异常IP;
    # 其他配置...    
}

几分钟后,流量下来了,服务端CPU 也降下来了,服务恢复

但这只是临时解法—— 不能每次都靠手动封 IP,太被动了。

于是我在 Nginx 里加了点限制:

2. 给 Nginx 加个“限流”

http 块里加:
代码语言:javascript
复制
# 限制每个 IP 的并发连接数
limit_conn_zone $binary_remote_addr zone=a2:10m;
# 限制每个 IP 的请求频率(每秒最多 5 次)
limit_req_zone $binary_remote_addr zone=a1:10m rate=5r/s;

location 里配置:

代码语言:javascript
复制
location /aaa-api/ { 
  # 允许突发 30 次,超出直接拒绝
  limit_req   zone=a1 burst=30 nodelay;
  ......................
  # 其他配置...
 }
  • $binary_remote_addr # 按客户端 IP 统计
  • zone=conn:10m # 分配 10MB 内存存储连接状态
  • rate # 每秒处理请求数
  • burst # 允许的突发请求数
  • nodelay # 不加这个配置会一直排队
效果如何?

结果:

限流一上,前几十个请求正常响应,超出的会报错

再看服务器 一点压力没有,稳如老狗

怎么算“超限”?

我理解Nginx 判断是否超限的依据是:

请求频率 > rate + burst

例如:

rate=5r/s

burst=30

这意味着:

  • 每秒最多处理 5 个请求 最多允许额外排队 30 个请求
  • 总阈值:短时间内最多处理 5 + 30 = 35 个请求

所以:如果一次性发起 50 个并发请求,前 35 个可能被处理或排队,后 面的就会报错

后面计划写个自动化脚本,自动分析日志,识别异常访问 IP 发送通知给我并实时拉黑,实现半自动化防御


仅此记录一下,下次再遇到不用慌。

如果你有更好的法子,求教!

欢迎留言聊聊,一起避坑 😄

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python运维开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ——记一次踩坑记录
  • 一查日志!!!
  • 1、临时封 IP
  • 几分钟后,流量下来了,服务端CPU 也降下来了,服务恢复
  • 于是我在 Nginx 里加了点限制:
    • 2. 给 Nginx 加个“限流”
      • 在 http 块里加:
      • 效果如何?
    • 怎么算“超限”?
  • 欢迎留言聊聊,一起避坑 😄!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档