本人于2009年12月迁移至独立BLOG。
1、欢迎光临运维进行时,希望认识更多志向相同的朋友!
2、本站部分资源来源于网络,如有侵权请及时与我联系!
3、强烈建议使用Firefox、Opera、Safari及IE7以上的浏览器访问,以获得最佳浏览质量!
4、请勿发表与中华人民共和国法律、法规相抵触的言论,谢谢合作!
5、本人发布的文章与评论内容仅代表本人观点。
1、欢迎光临运维进行时,希望认识更多志向相同的朋友!
2、本站部分资源来源于网络,如有侵权请及时与我联系!
3、强烈建议使用Firefox、Opera、Safari及IE7以上的浏览器访问,以获得最佳浏览质量!
4、请勿发表与中华人民共和国法律、法规相抵触的言论,谢谢合作!
5、本人发布的文章与评论内容仅代表本人观点。
同一个分析日志的awk脚本,在Centos、ubuntu操作系统运行效率存在巨大差异。即在ubuntu中只需1分钟,而在Centos中则需要20分钟。以下为我的排查步骤:
1、检查服务器内核版本
拿一台升级过最新Linux内核(2.6.32.3)的CentOS5.4服务器来测试,结果还是没有改善 。
2、检查内核ulimit参数
在Centos服务器调整所有ulimit参数与ubuntu系统一致,结果还是一样。
3、优化awk脚本
由于mawk与gawk部分语法上存在差异,如将转义符‘\’换成'\\',双引号换成单引号,依然没有效果。
4、检查gawk版本
检查两个系统的gawk版本,发现所有Centos版本默认自带的gawk都低于ubuntu系统自带的3.1.6,尝试在Centos服务器下载、安装源码gawk3.1.6,结果速度提升了20倍。测试结果如下:
time /usr/local/bin/gawk -f test.awk access.log >"temp.txt"
real 0m48.739s
user 0m42.904s
sys 0m5.389s
1、检查服务器内核版本
引用
拿一台升级过最新Linux内核(2.6.32.3)的CentOS5.4服务器来测试,结果还是没有改善 。
2、检查内核ulimit参数
引用
在Centos服务器调整所有ulimit参数与ubuntu系统一致,结果还是一样。
3、优化awk脚本
引用
由于mawk与gawk部分语法上存在差异,如将转义符‘\’换成'\\',双引号换成单引号,依然没有效果。
4、检查gawk版本
引用
检查两个系统的gawk版本,发现所有Centos版本默认自带的gawk都低于ubuntu系统自带的3.1.6,尝试在Centos服务器下载、安装源码gawk3.1.6,结果速度提升了20倍。测试结果如下:
time /usr/local/bin/gawk -f test.awk access.log >"temp.txt"
real 0m48.739s
user 0m42.904s
sys 0m5.389s
内置的字符窜函数
gsub(r,s) 在整个$0中用s替代r
gsub(r,s,t) 在整个t中用s替代r
index(s,t) 返回s中字符串t的第一位置
length(s) 返回s长度
match(s,r) 测试s中是否包含匹配r的字符串
split(s,a,fs) 在fs上将s分成序列a
sub(s, ) 用$0中最左边也是最长的字符串替代
subtr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
gsub(r,s) 在整个$0中用s替代r
gsub(r,s,t) 在整个t中用s替代r
index(s,t) 返回s中字符串t的第一位置
length(s) 返回s长度
match(s,r) 测试s中是否包含匹配r的字符串
split(s,a,fs) 在fs上将s分成序列a
sub(s, ) 用$0中最左边也是最长的字符串替代
subtr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分