2018-09-07 ↔ 3923阅读

网站服务器死机故障排查过程

近一年多来,网站流量上升比较快,以至于数次出现CPU、IO、带宽及网络安全等方面的瓶颈。尽管不是大网站,但我也把近两年来发生的几次典型故障及排查过程写出来与大家分享。

服务器设备

因恶意攻击导致网络瓶颈

这件事发生在两年前,当时可能是因为发了篇揭露某小额信贷公司欺诈行为的文章,那家公司找人删贴不成,于是就来搞DDOS访问(其实就是攻击,但从第三方统计数据是看不出来的)。我们的网站服务器本身是有防火墙的,我通过HTTP日志发现有异常攻击之后,通过防火墙限制了并发次数和带宽,然后更改了页面缓存策略(增加静态页面的数量),让CPU和带宽都降到正常状态,对方发现无济于事后放弃。
后来又遇到一次规模比较大的垃圾评论,不过这些评论大多发自一个比较集中的、来自国外的IP段,在HTTP层以下把这个IP段直接过滤掉后问题得以解决。

DDOS攻击

内存不足导致数据库运行效率低下

再往后来,网站的流量越来越大,再加上有几条SQL语句需要跨表做查询并做统计、排序,所以数据库的压力比较大,在访问高峰期屡屡出现10秒甚至30秒以上的缓冲时间,CPU占用和内存剩余量都已告急。
我也算是搞过技术的,明白发生这种情况主要还是因为内存不足,于是先扩了一倍的内存,问题迎刃而解。

top命令界面

系统不稳定导致页面报错

再往后来不知是什么原因,数据库总是不定时挂掉,数据库死掉以后全站就会报500内部错误。这个问题出现的概率大约每两周一次,但时间不固定。
这个问题让我好生苦恼,尽管也有云监控之类的报警功能,但毕竟500错误对网站的影响还是比较大的。万般无奈之下想到一个权宜之计:每天凌晨在访问量最小的时候自动重启一下数据库,耗时1-2秒,几乎不会对用户及搜索引擎产生影响,从那以后这个错误就再没出现过。

服务器内部错误

宽带不足引起死机

后来网站的流量进一步增长,出现了让人哭笑不得的带宽瓶颈问题。
之所以说哭笑不得,是因为这个事故居然是因为访问量出乎意料地上升导致带宽不足引起的。主要症状就是在访问高峰期,CPU莫名其妙地飙到100%,然后直接卡死,查HTTP日志、数据库日志和系统日志都没发现异常,后来看了阿里云的监控图,发现进程数量、出口带宽及CPU占用率几乎是同步上涨,并且出口带宽跑到了带宽上限的90%以上,于是猛然惊醒:是不是因为带宽不足导致IO排队、引发HTTP进程数量急剧上升所致?
于是临时升级带宽,问题得到解决。
微信扫码关注
(也可用微信搜索公众号“劲来吧”)

公众号二维码

0 个回应

留言