记一次程序把生产服务器带宽干崩了的记录

2024-06-21 356 0

服务器带宽:100M独享
事件:收到云监控报警 联通线路 访问丢包
ping 服务器网关正常
ping 服务器IP超时丢包

奇怪现象:同一出口ping
linux 客户端 ping 服务器 不会超时丢包
windows 客户端 ping 服务器 则会超时丢包

原因是服务器带宽跑满了 导致丢包

排除内网网段 查看实时网络情况

iftop -f "not net 192.168.1.0/24" -i bond0 -n

找出占用带宽IP 进程

$ ss -ntep | grep 222.217.94.111
SYN-SENT   0      1      120.33.66.133:64018              222.217.94.111:443                 users:(("php",pid=62599,fd=14)) timer:(on,124ms,0) uid:1001 ino:900979165 sk

通过pid 查看进程 详情

$ ss -ntep | grep 222.217.94.111 | awk -F '=' '{print $2}' | awk -F ',' '{print $1}' | while read -r pid; do ps -ef | grep -v grep | grep "$pid"; done
root     56276 26604  0 13:17 pts/3    00:00:00 grep --color=auto 62599
www      62599 62598  0 Jan22 ?        00:02:03 /usr/local/webserver/php7/bin/php artisan sundayhk:upload_user_avatar

查看代码及日志发现是,同时多次请求CDN上的5M图片,带宽跑满,导致丢包。
这里100M独享 理论最高下载速率为12.5M。 100M / 8=12.5M
若没控制好频率,多个进程同时下载5M的图片,其实同一时间下载2个5M文件就已经服务器带宽刷满,此时就会导致其他网络请求丢包。

这里的CDN源站其实也在此服务器上,不过没走内网,走公网取CDN的图片,把服务器自己的带宽干拿倒了。

解决:服务器内部设置DNS解析走内网IP

哈哈,这回是被自己人干倒了。

相关文章

haproxy 负载rabbitmq集群 报client unexpectedly closed TCP connection
Nginx Apache CORS OPTIONS预检请求配置
windows 2012 命令行批量修改文件权限 删除
CICD持续部署 Jenkins 部署
CICD持续集成 SonarQube 代码检测部署
win11 Microsoft Store 微软账户无法登陆 0x80190001 解决

发布评论