试了一下,应该是系统对不支持cookie的浏览器访问的处理有问题:这种浏览器每刷新一次页面,就会增加一个或多个用户。这样网络爬虫梢一动就是几十个伪在线用户。
[该贴被leebai于2007年04月12日 00:47修改过]
你可以试一下:把浏览器设成不支持cookie,再访问那些网站首页,无论你刷新多少次,在线人数都不会增长的。而JiveJdon每刷一次就长几个,试了一下其他基于Jive的论坛,发现也都不对,应该是根上的题。
看来Jive论坛之所以没有流行起来,还是自身原因的。
[该贴被leebai于2007年04月13日 11:44修改过]
另外Session生存期是15分钟,也就是在线人数是15分钟内访问本站的session个数。显示在线人数,主要是让大家对JiveJdon在较大负载下运行的信心,否则总以为免费没好货。在线数字只是参考,前后对比就有点意思,比如刚才10分钟前是400人,现在是200人,说明午饭时间吃饭去了,减少了200人,
Jivejdon不同于Jive,是一个全新系统噢,感谢你建议。也更欢迎你下载一个jivejdon运行看看。
[该贴被banq于2007年04月13日 12:12修改过]
聊天室、论坛、内容管理程序我都实现过(见 xjawa网站),所以我知道在线人数统计是怎么回事。
实际上Servlet容器本身的HttpSession机制没有问题,问题是:应该在什么时候创建session?
一般的业务系统软件中,只有用户登录之后才创建session,而CMS/BBS/CHAT等面向公众的网站系统“来者都是客”,未登录者也需要考虑;但是,不能一有请求就创建session,因为有些浏览器不支持cookie,有些人有意地关闭了浏览器的cookie,网络爬虫一般也不支持cookie,要是这些客户端不断的访问你网站,而你每次request都创建session,这样一个客户端就会有N个伪session。如果有人打开浏览器不断刷新你的网站(更不用说写个简单的恶意程序),你的web容器中的session就会爆炸式的增长,只要他愿意,把你的服务器搞瘫痪是易如反掌,所以,即使只基于系统安全的考量,也要防止这种情况的发生。
你的除取100个基数的办法是一个掩耳盗铃的方法,根本上的处理办法是:不给这些无法实现session跟踪的的客户端创建session。
以上讨论仅限于基于cookie的session,基于URL重写方式的session在现实中代价太高,很少人使用,故不考虑。
[该贴被leebai于2007年04月13日 12:40修改过]
[该贴被banq于2007年04月13日 12:59修改过]
[该贴被leebai于2007年04月13日 13:39修改过]
不知这两个整在一起效果怎么样.....
Lee的Servlet程序也做得不错,文档写得很流畅,不过具体没有看到如何控制Session的,有时间再行讨教。
谢谢板兄夸奖,其实我的很多实现都比较老式。 因为01、02年的时候,我们主要做websphere的项目,ibm对j2ee 新API的支持都比主流晚一些,所有像filter,session listener之类新API都没法使用,所以用自己设计的机制代替这些功能,后来发现跑起来还算稳定,也就没再去动程序。
非常正确,以后会不断调准,现在session timeout是15分钟,只能说是15分钟内访问人次。
你的网址做的很不错,问题是访问的时候有些慢.
我这边是电信的网,不知道你那个是否是网通的网,所以比较慢阿
要了解这个在线人数的问题,要从tcp传输协议说起,因为tcp传输协议在数据传输两端是无状态的,数据传输两端互相交流在自己状态改变时并不通知另外一端,所以在用http浏览网站是不可能有准确的在线人数显示的。如果对这方面感兴趣或有什么疑惑可以去了解一下tcp/ip协议
此致
敬礼