随后的一天里,网站遭到了流量攻击,nagios报警只提示系统负载过大,然后打开流量图看了一下,哎,尼玛,卧槽,怎么能这样呢! 流量简直爆表!
然后连接网站服务器,连接了半天才连上去,连上去之后,随手打了个ls命令! 这个纯属习惯! 然后就卡着了,等了好一会才反应过来! 然后top了一下,同样也是等了好一会! 系统负载爆表。Load飙到了100多,nagios都获取不到状态了! 因为系统负载过大,nrpe信息已经发不出去了!
随后犹豫都不带犹豫的,直接把apache,java进程停止掉,然后在启动! 释放一下程序所占用的空间! 系统进程负载100多,还指望怎么排错处理???打了ls反应半天才过来,在给上级说要停止服务???等回复过来,指不定服务器都挂个蛋了!
然后就看apache访问日志,当时直接看的是apache访问的IP! 看到许多带有后缀访问过来的! 例如1.1.1.1.ha-dc 1.1.1.1.index-bn-spind-cn什么乱起八糟的IP
随后直接就防火墙匹配关键字来封杀掉!
iptables -I INPUT -m string --algo bm --string "1.1.1.1.ha-dc" -j DROP
直接丢弃,设置为拒绝的话系统还要给那边一个回复值。
然后这么着的把那几个IP给封掉了。
随后又盯着top看了一会,发现java程序不太正常,显示的cpu占用经常在500%-800% 左右波动。我们那的环境是用的weblogic做的中间件。Java程序一般在100%-200%是很正常的范围。但是这么高肯定就不太正常了。
随后直接 top -H来看占用资源最大的,果不其然,都是java! 然后找了个运行时间最长的线程,发现没有什么异常,并没有像网上说的那种要转换为16进制的!
ulimit -a来看了一下允许的java最大的线程。发现设置的有点低
只允许同事65535个,有可能是这个的问题!
然后就把线程数设置到了最大
ulimit -n 102400
java允许设置的最大线程!
然后过了少过了一会,java稳定下来了!
额,(⊙o⊙)…(⊙o⊙)…java还能出现异常了! 我也是醉了。
然后到此,程序异常解决了。但是网站被刷流量的还没有解决!系统负载固定在6左右,在看apache访问日志。发现有他们那些IP有的还能过了!额,
(⊙o⊙)…(⊙o⊙)…(⊙o⊙)…
因为IP访问次数过于巨大,iptables也不能全部挡住,问老大要了硬件防火墙。
然后在硬防里边设置了一下。到此,问题解决!