你完全不用耐心的看完后面所有的说明,awstats在进行日志统计时,
命令行统计增加: -databasebreak=day
报表输出时增加: &databasebreak=day&day=DD
即可按天进行统计, 解决按月统计,归档数据过大导致统计过慢/失败的问题。

很多网站在流量从10万级增加到百万级以后就放弃了awstats作为统计,具体表现就是到月底的时候,统计数据会运行1天都运行不完。于是就改为webalizer或者analog了。其实这并非awstats统计效率不高:awstats很多丰富的统计指标:蜘蛛识别 浏览器识别,文件类型统计等,都是比Webalizer丰富的,Webalizer要实现类似的统计力度也会出现性能问题。

原因分析:
性能的瓶颈在哪里呢:awstats统计缺省时按月统计,到月底时候记住的头20多天的历史IP等累计统计指标,会使得DUMP数据文件变得很大(数百M),而awstats运行时,需要的内存量是dump数据文件的3-4倍。当这个monthly积累的数据导致awstats统计脚本载入内存的数据量过大,用到系统文件交换做内存的时候日志统计效率就会降低了(处理速度会低2-3个数量级),于是出现了运行一天都统计不完前一天日志的现象。

AWStats丰富的统计指标还是很有用的,而一个网站已经达到日千万级的访问请求,按天的详细的数据统计也是必须的了。所以:索性牺牲一下按月的独立IP统计,将日志改成按天统计,如果需要按月的汇总,可以利用awstats的dump数据成为一个中间数据源汇总统计。

其他问题:
1 按天的报表浏览:用 Calendar.php 做个日历浏览界面;
按天统计后,awstats的输出文件会变成awstatsMMYYYYDD.confname.txt 每天一个统计文件,而报表的输出需要增加 &databasebreak=day&day=DD 来指定某一天的数据。增加了日期后,awstats的报表输出有些不方便,awstats本身没有提供按日的浏览,可以自己做个 日历前端 ,方便awstats的报表浏览。
2 日志数据源:最好是压缩的,因为日志上2G以后,文件系统出问题的可能性大。尽量还是压缩日志后,通过 zcat 管道给awstats进行统计;

类似的思路:
1 如果 databasebreak=day 仍然无法解决问题, 排除掉次要统计指标:过滤掉图片 js css等文件的请求日志;
2 如果仍然没有办法解决问题: 设置为小时级别截断 databasebreak=hour 然后用每天的同一个小时(比如:下午5点-6点)做为1天的抽样,进行每天的数据跟踪;

总之:为了统计精度/完整性牺牲重要的统计统计指标是不值得的。当流量提高到百万级别,即使损失了n%的精度,对于做出结论已经足够了。而且利用awstats 的dump data作为中间处理结果,进行数据挖掘也是很方便的(大部分是CSV,分项的很容易用 grep 截取分离出来)。

作者: 车东 发表于:2007-03-07 21:03 最后更新于:2007-12-19 09:12
版权声明 :可以转载,转载时请务必以超链接形式标明文章 的原始出处和作者信息及 本版权声明

确实如此,以前每到月底myjob的统计就是一个漫长痛苦的过程,在分析猜测得出的车老大所说的原因后,就改成按天统计了,不过不知道-databasebreak=day参数,每次都是分析得出报表后就移至相应的日期目录了。这样4G左右的日志也只需1个半小时就能搞定了,并且按天得出的报表对于运维的帮助更大,月度统计则通过每日记录的EXCEL文件搞定了。

老黑 发表于 2007年03月08日 上午09时31分

这样4G左右的日志也只需1个半小时就能搞定了,并且按天得出的报表对于运维的帮助更大,月度统计则通过每日记录的EXCEL文件搞定了。

是不是我的參數設置有很大問題,我的網站日IP只有1万卻經常不能把每天的日誌分析完,我是用任務計劃每天晚上11點啓動統計命令,但是到第二天下午可能才能夠完成統計。是怎麽囘事?哪位能指點一下,不甚感激:)

mekk 发表于 2007年03月21日 上午09时33分

恭喜你升级了~
http://www.klogs.org/2007/03/24/%e8%bd%a6%e4%b8%9c%e4%bb%8a%e5%a4%a9%e5%8d%87%e7%ba%a7.html

鬼仔 发表于 2007年03月24日 晚上11时06分

你好,我改成按天分析后,6.5g的日志8个小时也分析不完,在系统管理器中perl的cpu占25%左右,虽然cup空闲。在我本机就快多了,cpu占有率100%,请问还需要设置什么地方呢?

海滨 发表于 2007年04月28日 上午09时33分

我现在用awstats分析,网页数偏大,因为网站用的shtml,页面里面嵌了好多别的“碎片”网页来显示,现在看awstats把这些都算在网页数里面去了,甚至连首页的登陆窗口嵌的php也算作一份了,请问有什么好办法能让awstats不统计这些页面,只统计url地址框里面“真正”的网页数?

在友 发表于 2007年07月23日 上午11时52分 小兄弟刚接触awstats不久,现在想awstats按天统计,并生成报表,看了你的文章后,自己练习,
----命令行统计增加: -databasebreak=day
报表输出时增加: &databasebreak=day&day=DD
即可按天进行统计, 解决按月统计,归档数据过大导致统计过慢/失败的问题-----
我用命令"# perl awstats.pl -config=test -update -databasebreak=day "输出了按天统计,
接下就不如何用你所说的"&databasebreak=day&day=DD"按开生成报表,

能否把命令行写得详细一点...谢谢!
tony 发表于 2008年09月19日 下午05时50分 AWStats 配置更新: Unknown encoding 'GB18030' at plugins/decodeutfkeys.pm和JikeSpider - 2012/02/14
AWStats 7.0 发布, Linux下的安装配置使用备忘 - 2010/06/05
AWStats的自定义扩展统计:Using the Extra Sections features - 2009/12/22
AWStats 6.9发布: 补充中文搜索引擎定义和配置样例下载 - 2009/01/12
用AWStats统计Mail服务日志(sendmail)并生成报表 - 2007/12/06
给AWStats关键词统计增加去百度,谷歌等搜索引擎的站内查询链接 - 2007/09/28
AWStats 6.7的补充更新:中文搜索引擎定义和twiceler蜘蛛等 - 2007/08/10
AWStats:QQ纯真库IP解析插件安装 - 2007/06/21
awstats统计中过滤trackback spam - 2007/05/02
Calender.php: 给网站应用加上日历归档/导航 - 2007/02/11
多个服务器日志的排序合并: clfmerge - 2007/01/22
赶在AWStats 6.6正式发布前的更新 - 2006/10/02
给AWStats增加针对Googlebot/Baiduspider/Yahoo!Slurp/MSNBot的详细统计 - 2006/09/10
[AWStats] 加入新搜索引擎定义:114.vnet.cn - 2006/09/01
在DreamHost上使用AWStats国家/地区统计: GeoIP和GeoCity Lite的配置方法 - 2006/08/15