如何提高统计监控脚本的效率
By katana
对于比较大的日志,linux的一些命令还是很消耗资源的,多次遇到定时统计监控脚本导致机器负载过高,磁盘占满等情况,严重影响服务提供。
1.实时统计监控请使用tail命令:
现在我们做了很多实时监控,5,10分钟运行一次,每次对最近10分钟的内容进行统计并报警,但是很多人都是直接对文件grep时间,这样越到晚上,文件越大(按天日志),遍历的内容越多,请看以下实际cpu使用时间测量例子:
user@host:~/log/day> time grep "^/[23:5" -c day_recv_20090615.log
68290
real 0m9.279s
user 0m0.740s
sys 0m1.060s
user@host:~/log/day> time tail -n 1000000 day_recv_20090613.log|grep -c "^/[23:5"
76548
real 0m3.493s
user 0m0.192s
sys 0m0.420s
user@host:~/log/day> time tail -n 100000 day_recv_20090614.log|grep -c "^/[23:5"
66405
real 0m0.330s
user 0m0.020s
sys 0m0.032s
经过tail之后,命令效率提高95%以上。
2.如果能使用grep命令不要使用awk
time grep "|deal|" day_recv_20090615.log -c
10819728
real 0m9.525s
user 0m2.396s
sys 0m0.384s
time awk -F"|" '{if($2=="deal") print $0}' day_recv_20090611.log |wc -l
10976923
real 0m13.878s
user 0m8.997s
sys 0m1.316s
3.对于比较大的文件,sort命令尽量使用-T选项指定临时文件生成文件夹
如果sort不指定临时文件生成文件夹,那么将默认将sort中产生的临时文件放到系统临时目录,当你的文件过大,超过根目录盘的空余空间时,不仅脚本执行不完,还会造成系统一些问题,所以请sort较大文件时加上-T选项,把临时文件生成指定到剩余空间较大的其他盘。
要提高脚本效率,大家可以用time命令来测量你使用的命令的效率,当然不对能同一文件用不同的命令测量,而应该对同一类型其他文件进行测试,因为在第一次使用该文件之后,系统会把该文件的处理过程放到内存中并没有释放,您再次使用该文件的时候,系统处理时间当然变快很多。
本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.csdn.net/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:1780551083@qq.com)