全部博文(1144)
分类: LINUX
2014-08-18 18:00:30
缓存服务器上有一个perl写的日志分析脚本,记录所有不重复的url。之后对squid进行目录刷新时,从记录下来的文件中查找匹配的url即可。
不过这些天服务器老是出现负载报警,用top观察,这个url_parser.pl脚本一旦执行时,就占用了高达90%的CPU和40%的MEM。wc看存储的url.list文件,有大概4,000,000行;url.`date`.list当前有140,000行。
于是上CU去请教perl执行效率的查找思路。
回复有:1、正则精准度;2、文件读取效率;3、全局变量数;4、频繁打开句柄;5、流程优化
比如读取文件不要用@line=FILE用while(
perl -MCPAN -e shell
>install JSON::Any(不安这个东东,在nyt生成html的时候会报warning,不过不安也可以)
>install Devel::NYTProf
然后采用perl -d:NYTProf /home/purge/url_parser.pl运行脚本,会在当前路径下生成nytprof.out。
再用nytprofhtml nytprof.out生成web页面。