当网站莫名很卡的时候, 查故障可以考虑的事项:
判断内因, 外因, 是linux上面的问题, 还是我的应用问题, 常见nginx, java(tomcat, netty)
内因:
cpu, 进程数, 内存
外网
流量, 被攻击(cc, 与流量相关)
常用排查手段
一.内网方面
top查看系统状态
top -c
1.根据进程号进行查询:
# pstree -p 进程号
# top -Hp 进程号
2.根据进程名字进行查询:
# pstree -p `ps -e | grep server | awk '{print $1}'`
# pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l
二.外网方面
通过命令, 查看ip与主机连接数, 150以内都正常, 超过就很可疑了
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
执行效果如果
通过nethogs查看进程, ip, 上行, 下行
nethogs eth1
通过iftop查看ip, 上行, 下行, 峰值, 某时段流量
iftop -i eth1
实例:网站很卡, 使用xshell登陆上去, 但很卡, top -c 很慢, 以为是系统原因, 但用xftp下载个几k的文件也关天不动, 就很可疑了, 怀疑是网络问题, 使用aliyun的管理控制台直接连接终端, 这个比xshell可靠, 速度很正常, 查看内存, 进程等指标, 很正常, 查看管理控制台的网络, 发现网络出行与入行曲线相差很大, 而且出行已达峰值, 定位到是网络问题, 带宽占满了, 如图
剩下就是排查到位是哪个程序占用带宽了, 通过ifconfig查看哪个网卡的流量大,
然后使用iftop和nethogs查看, 如图
看出nginx比较可疑, 199k一支独秀, 查看nginx日志, 发现异常:
其中 120.24.78.101这个访问长时期持续访问, 取样其中一秒分析:达到75次
再算下流量 20292*74*8=12175.2k, 正好吻合10Mbs的带宽上限
至止, 问题找到了, 就是这丫的在做cc攻击, 而且, 这丫的还是阿里云的IP(有黑幕?)
剩下就是黑白名单问题了, 可以在nginx上限制最大连接数, 也可以在iptables上做, 这个就不在这里说了
ps: 为什么这个案例回顾起来是如此的简单, 可这个整整花了我2天的时候啊, 实时, 在线, 当时那个压力和崩溃啊
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐