利用工具如AWStats来分析apache的access.log文件来分析用户行为。使用Webalizer进行网络流量日志分析
大型网站,如网易和新浪。购买了一些专业的工具如Webstream进行分析
-----------------------
2:问题:{
先说系统用的框架是大家常见的SSH框架与AJAX,会的人多,招聘更容易些。目前开发的一个WEB视频分享项目,该项目中到处充斥着各种计数相关操作,如某个资源有对应的周点数、月点数、总点击数、评论数、每个分类或者标签下对应的总记录数,再就是网站流量的统计,PV值(这个计算量太大暂不实现)。老版采用的方式,就是点击一次就UPDATA一下数据库表中对应的字段值,这样站点在并发访问量大的情况下不可取,看到同行的网站大多也是采用类似(影响性能),另一种就是JSP+XML+DB方向,定时更新方法,想请问大家平时采用的是什么方式以及您的设计思路;
另一个问题是例如评论数,目前网站的需求就是首页上有个评论数最多的视频(20条),设计中评论数一种方式就是在对应的资源表中增加一个字段用来保存对应的评论数,但这样增删评论都需要维护,这种方式相对于另一种靠程序来统计效率要高些,程序统计我的做法是因为是一对多的关系,我获得一个LIST取他的SIZE,或者写条COUNT SQL获得(影响性能).
上述问题看似简单,但处理得不好对网站负载有一定的影响,所以请大家点评,并请教网站流量统计及PV值计算最优设计思路。
}
网络回答:
robbin:你可以内存当中保持一个点击计数器,每次更新内存的计数器,内存的计数器每达到一定的数值,例如100,就更新一次数据库。http://www.iteye.com/topic/26976
一个内存变量不过就是4bytes,你就是维护1000个计数器,不过才4KB内存,难道你要维护100百万个内存计数器?那也不过才4MB内存嘛。4MB内存你咋溢出?
sorphi :不复杂,map结构就可以
key: 要统计点击数的资源标识
value: 递增值
至于何时更新到数据库,就有多种方案。
另一个问题是例如评论数,你已经给出了两种方案了,关键是自己权衡可靠性和速度之间的关系。
网站流量统计及PV值计算,应该采用专门的日志分析软件或者第三方服务,不是你的java应用程序应该处理的。