11/22/13

squid 内存溢出故障 — oom kill 掉squid进程

描述:

1、移动节点squid进程消失

2、squid日志出现大量 tcp connection to 123.123.123.123/80 failed

3、系统日志,Out of memory Kill Porcess 3xxx squid xxxxx   child process exited due to signal 9等错误

4、其他电信节点,调用123.123.123.123 上资源的服务同时报警,web 服务器报500 。

5、查看 123.123.123.123 流量、nginx、apache监控,发现此时段流量异常,nginx请求异常。

6、分析123.123.123.123 apache日志发现,此时段ip114.199.32.11访问量剧增,初步断定该ip进行攻击。

 

总结:由于123.123.123.123上web服务器被114.199.32.11攻击,导致流量异常,服务器无法正常响应其它正常请求。从而导致移动节点squid进行多次尝试连接,最终内存溢出,squid挂掉。

处理方法:

1、重新开启squid服务或者用nginx代替。

2、加强squid进程是否存在监控,比如nagios。

3、shell脚本监控squid服务可用性,发现大量failed connect,试着重启服务。

4、开启webmonitor监控,url可用性监控报警。

 

11/22/13

squid 重启脚本

#!/bin/sh
num=`awk -F'|' '{gsub(/\/|:/," ",$1);if(mktime($1)>systime()-900) print $0;}' /opt/phpdba/squid/var/logs/cache.log|grep "Failed to select source"|wc -l`
echo $num
echo `date`
if [ $num -gt 5 ]
  then
echo "restart"
/opt/phpdba/squid/sbin/squid -k reconfigure
fi