论坛首页 Java版

[websphere]一个流量统计的问题

浏览 425 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-04-20 关键字: websphere
先小白一下,我本人对java并不熟,帮朋友的忙处理一个问题,请坛子里各位好汉帮忙想下思路罢。

描述:一个网站,有两个数据需要入库,一个是访问人次,另一个是登陆次数。对于每个访问者,将在第一次访问时生成一个超时时间为20分钟的session,使用sessionListener监视,超时(unbound)时将访问者的IP,访问时间记入数据库。然后,每个人可以使用他的邮箱登陆,对于每一次登陆,也会将登陆者的邮箱和登陆时间入库。常理上讲,登陆者需要首先访问网站,因此,访问人数应该比登陆次数多。
系统的结构大概是一台F5做分发,4台websphere集群,使用oracle数据库。

现在的问题是这样的:
1、这个系统曾经正常运作3个月左右,每天入库记录50万条左右,现在oracle磁盘占用800G。
2、从半个月前开始,每段时间统计入库的访问人次明显低于登陆次数,比如某天有一万人登陆,而访问时间则只有3000左右。

我的一点猜测:
1、代码上应该没有问题,否则如何解释这种运行3个月都很正常,然后突然开始全部不正常的情况?
2、有没有这种可能,websphere在某一天被人动过,将默认的session时间改得很小,比如为2分钟,而代码里现在的实现方式是比较lastTime与currentTime之差是否超过一个常数,那么,有没有可能,即当session失效时在代码里看来是没有失效的?
3、由于是在session失效时才入库,所以在用户最后一次操作到失效这段时间session被某种方式清理掉了?(如果有,请指一下可能的原因)。
4、下次去我打算看一下websphere的配置,比如有没有可能将session时间设得很长,比如一年,所以现在那些曾在半个月之前访问的session依然完好地保存在内存里没有失效,所以也没调用valueUnbound。顺便问下,websphere配置里session最长可以设为多长?

一点小看法,各位别见笑,如果觉得有任何可能会造成这种情况的,都请讲出来,我一个一个地试……

先在此感谢。
   
时间:2008-04-20
1的可能性不大,如果没人改代码和配置,直接出错可能性不大。
2这个可以和管理员核对,并仔细检查日志,查看是否有人更改,这其实很容易。而且程序日志应该也有所记录。
3Session的失效必定会引发监视器
4不要胡来。Session设置那么长非出事不可。内存会被无数Session占满而造成溢出。你居然说有半个月前建立的Session还没有失效???这个Session半个月每20分钟不停的连接你的网站!!!!!
你最好查看一下Session的处理吧。无论如何正常情况下不可能有这么长的Session。我觉得这倒可能是你问题的原因,因为Session不释放。所以登录记录在Session建立的时候写数据库,所以写进去了。但是你好像是访问记录在Session失效时写入数据库。那么现在Session不失效,所以不写数据库。是否是这个原因?
最后说一句,你的应用中Session能保存半个月,居然还没崩溃,奇迹。
   
0 请登录后投票
时间:2008-04-21
魔力猫咪 写道
1的可能性不大,如果没人改代码和配置,直接出错可能性不大。
2这个可以和管理员核对,并仔细检查日志,查看是否有人更改,这其实很容易。而且程序日志应该也有所记录。
3Session的失效必定会引发监视器
4不要胡来。Session设置那么长非出事不可。内存会被无数Session占满而造成溢出。你居然说有半个月前建立的Session还没有失效???这个Session半个月每20分钟不停的连接你的网站!!!!!
你最好查看一下Session的处理吧。无论如何正常情况下不可能有这么长的Session。我觉得这倒可能是你问题的原因,因为Session不释放。所以登录记录在Session建立的时候写数据库,所以写进去了。但是你好像是访问记录在Session失效时写入数据库。那么现在Session不失效,所以不写数据库。是否是这个原因?
最后说一句,你的应用中Session能保存半个月,居然还没崩溃,奇迹。

嗯……其实半个月session是我说的一种假设,夸张的说,并没有见到实际情况。但是试想,如果session设的是10天,那么现在也应该是10天前的session全超时了,那访问人次也应该是回升了。

我想服务器的配置session时间是30分钟吧。如果没有被改的话。
   
0 请登录后投票
时间:2008-04-21
不明白为什么当Session失效的时候才记录IP,能不能给讲讲这个流量统计的设计思路
   
0 请登录后投票
时间:2008-04-24
Joo 写道
不明白为什么当Session失效的时候才记录IP,能不能给讲讲这个流量统计的设计思路


是这样的,因为除了统计访问者以外,还有记录他的总访问时间,在session第一次访问时会初始化一个值为0,以后每次访问如果session存在,就将这个值设为系统时间减去session创建时间,这样在入库的时候这个值就会等于访问者最后一次访问与第一次访问时的差值,也就是总访问时间。在session创建时就记录的话就没办法统计到这个时间了。

昨天在测试服务器上跑了一段时间,没有出现问题,想必代码上出错的可能性很小了,但在正式服务器上还是会出错。现在在想有没有这些可能:

1、正式服务器的配置某处被改。请教大家在哪些地方出现修改会出现这种情况?
2、session affinity与前端分发器有冲突。

另外,确认了websphere配置的session的失效时间为30分钟。所以上面的后两个猜测被否定了。哪位大哥能再给点思路或猜测的?小弟感激不尽。
   
0 请登录后投票
时间:2008-04-29
源程序能动吗?在里面加些跟踪日志信息,可能会找到一些问题的线索。
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐