首先打个广告,我们的网站人人围,一个社交、新闻分发平台:http://www.renrenwei.com/
服务器架构:nginx+mysql+mongodb+php,用户登录信息session存在mongodb中
受攻击情况:
11-23号左右开始持续一周的DDOS攻击,有大量的北京、广东、海外的IP不停的刷网站的注册信息,两三天内注册用户数量达到7-8万,由于IP不同,所以无法用IP黑名单的方法禁止访问与注册
受攻击结果:
由于并发请求量太大,又受限于网站服务器性能,人人围网站一度瘫痪,数据库连接超时,mongodb存在大量过期session数据,垃圾数据超级多,导致session集合数据量达到千万级别,session的更新超级缓慢。
原因排查过程:
查看nginx访问日志,可以看到大量无意义的网络请求,查看mongodb运行日志,可以看到对session集合的读取操作超级慢,注销session用时甚至达到100S+
解决办法:
优化mongodb索引机制,重建索引并优化索引项
优化session回收机制,服务器加入定时清除session集合过期session值,清除包括空数据文档,过期数据文档等
修改前端验证码机制,加入更难识别的验证码