JiveJdon Community Forums
在线186人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 开源JdonFramework及其应用案例论坛
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 16 回复 / 2 页 [ 1 2 下一页 ]  发表新帖子  回复该主题贴
leebai

发表文章: 33
注册时间: 2007年04月10日 12:07
给他发消息
banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月12日 00:46 回复
这两天夜里上论坛,发现在线人数和白天一样多,甚至一更多,感觉不合常理。

试了一下,应该是系统对不支持cookie的浏览器访问的处理有问题:这种浏览器每刷新一次页面,就会增加一个或多个用户。这样网络爬虫梢一动就是几十个伪在线用户。
[该贴被leebai于2007年04月12日 00:47修改过]
banq

发表文章: 9095
注册时间: 2002年08月03日 17:08
给他发消息
回复:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月13日 10:44 回复
可查JiveJdon3源码,是根据服务器内部Session来计数的,这是一个简单的通用的在线人数。
leebai

发表文章: 33
注册时间: 2007年04月10日 12:07
给他发消息
回复:回复:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月13日 11:42 回复
banq兄,通用在线人数统计(像discus!,DVBBS,天涯,西词,csdn。。。。99%的有统计在线的网站的session都基于cookie实现)一般是不会把不接受cookie的客户机当成在线会话的。

你可以试一下:把浏览器设成不支持cookie,再访问那些网站首页,无论你刷新多少次,在线人数都不会增长的。而JiveJdon每刷一次就长几个,试了一下其他基于Jive的论坛,发现也都不对,应该是根上的题。

看来Jive论坛之所以没有流行起来,还是自身原因的。
[该贴被leebai于2007年04月13日 11:44修改过]
banq

发表文章: 9095
注册时间: 2002年08月03日 17:08
给他发消息
回复:回复:回复:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月13日 11:53 回复
多谢,源码是网上流行的java HttpSession统计人数,很简单,如果有问题,就出在Tomcat的HttpSession机制上了,这方面还没有仔细研究,也可能出现你讲的情况。

另外Session生存期是15分钟,也就是在线人数是15分钟内访问本站的session个数。显示在线人数,主要是让大家对JiveJdon在较大负载下运行的信心,否则总以为免费没好货。在线数字只是参考,前后对比就有点意思,比如刚才10分钟前是400人,现在是200人,说明午饭时间吃饭去了,减少了200人,

Jivejdon不同于Jive,是一个全新系统噢,感谢你建议。也更欢迎你下载一个JiveJdon运行看看。


[该贴被banq于2007年04月13日 12:12修改过]
leebai

发表文章: 33
注册时间: 2007年04月10日 12:07
给他发消息
re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月13日 12:37 回复
谢谢banq兄的认真回复,虽然我很大程度上不认同你的OO观点,但还是很喜欢这里认真、严谨的讨论气氛。

聊天室、论坛、内容管理程序我都实现过(见 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

发表文章: 9095
注册时间: 2002年08月03日 17:08
给他发消息
回复:re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月13日 12:54 回复
基本同意你的想法,对付爆炸Session,目前有一个不是办法的办法:将session time out缩短,5分钟或更短,然后配置同一个IP限制,以及防DDOS(后者基本没什么彻底办法)。


[该贴被banq于2007年04月13日 12:59修改过]
leebai

发表文章: 33
注册时间: 2007年04月10日 12:07
给他发消息
re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月13日 13:28 回复
其实,还是有办法的:先检测client是否支持cookie,只有支持cookie的client才予与创建session。板兄如有兴趣,可以下载我的框架,src里面的org.xjawa.system.DeepServlet中就有这样的处理(因性能、效率、偷懒、能力等因素,代码不是很OO,板兄别见笑:))。
[该贴被leebai于2007年04月13日 13:39修改过]
banq

发表文章: 9095
注册时间: 2002年08月03日 17:08
给他发消息
回复:re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月13日 15:13 回复
果然是好东西,我瞧瞧,jivejdon已经弄了一个失效URL后加jsessionId的servletfilter,对于那些没有cookie的google等爬虫tomcat会自动在url后面加上jessionId,这样导致网址变异性,加了这个filter就好了。

不知这两个整在一起效果怎么样.....
banq

发表文章: 9095
注册时间: 2002年08月03日 17:08
给他发消息
回复:回复:re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月18日 18:28 回复
今天已经加入了JiveJdon3的反爬虫的安全机制。对于一定时间内,同一个IP访问帖子次数超过一定频度,进行屏蔽,最明显是屏蔽了Baidu这样巨疯狂的spider,同时在线人数也将这些频繁访问的爬虫去除了。我是使用了filter + reference + throttle机制。

Lee的Servlet程序也做得不错,文档写得很流畅,不过具体没有看到如何控制Session的,有时间再行讨教。
leebai

发表文章: 33
注册时间: 2007年04月10日 12:07
给他发消息
re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年04月20日 23:58 回复
从善如流呵,哈哈。

谢谢板兄夸奖,其实我的很多实现都比较老式。 因为01、02年的时候,我们主要做websphere的项目,ibm对j2ee 新API的支持都比主流晚一些,所有像filter,session listener之类新API都没法使用,所以用自己设计的机制代替这些功能,后来发现跑起来还算稳定,也就没再去动程序。


 
leebai@xjawa
 
 
mypda

发表文章: 1
注册时间: 2007年05月13日 16:54
给他发消息
re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年05月13日 17:07 回复
不知道jdon的在线人数是如何通过HttpSession实现的,但是我想在线人数的统计是不可能很准确的,因为服务器端是很难知道一个客户端(浏览器窗口)是不是已经关闭了,session是有生命期的,所以用HttpSession统计出来的是目前还"活着的"session数量,而这个数字一定比实际在线人数多,把session的生命期设置得越短,在线人数的统计就越接近于实际在线人数.至于每刷新一次页面,在线人数就增加若干,在排除两次刷新之间确实有新登录的用户之外,应该就是程序的问题了,和是否采用Cookies应该没有关系。
banq

发表文章: 9095
注册时间: 2002年08月03日 17:08
给他发消息
回复:re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年05月14日 09:19 回复
>session的生命期设置得越短,在线人数的统计就越接近于实际在线人数
非常正确,以后会不断调准,现在session timeout是15分钟,只能说是15分钟内访问人次。
tempaccount

发表文章: 7
注册时间: 2005年05月05日 14:14
给他发消息
re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年06月15日 11:17 回复
to:leebai
你的网址做的很不错,问题是访问的时候有些慢.
我这边是电信的网,不知道你那个是否是网通的网,所以比较慢阿
magemagic

发表文章: 2
注册时间: 2007年06月26日 09:29
给他发消息
re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年06月26日 10:00 回复
leebai同志
要了解这个在线人数的问题,要从tcp传输协议说起,因为tcp传输协议在数据传输两端是无状态的,数据传输两端互相交流在自己状态改变时并不通知另外一端,所以在用http浏览网站是不可能有准确的在线人数显示的。如果对这方面感兴趣或有什么疑惑可以去了解一下tcp/ip协议
magemagic

发表文章: 2
注册时间: 2007年06月26日 09:29
给他发消息
re:banq兄:我发现这个论坛的“在线人数”有BUG,完全不准 发表: 2007年06月26日 10:04 回复
我是新来的还请大家多多关照,看了这个论坛很佩服benq,希望向你学习!
此致
敬礼
这个主题有 16 回复 / 2 页 [ 1 2 下一页 ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam