Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5272315
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: 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();正则^句首带上/oi;注意哈希表与内存交换区等等;最后推荐给我Devel::NYTProf,进行测试。
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页面。


http://blog.sina.com.cn/s/blog_04268f4b0100moi9.html

阅读(1002) | 评论(0) | 转发(0) |
0

上一篇:map 函数例子

下一篇:邮件的几个模块

给主人留下些什么吧!~~