大访问量的计数器

时间:2021-11-06 14:50:15
正在用weblogic做计数器,JSP的,用的连接池JDBCpool,虽然实现了,但当大压力时却遇到同步问题:两个用户同时访问,计数器只涨一个,

问Bea工程师了,说计数器需要考虑ResultSet,Statement,Connection的正确获取和关闭,
我也没明白,sigh

那位知道怎么办呢? 给个思路也好的呀

7 个解决方案

#1


用SESSION不好吗,也许会改善的哦

#2


访问数据库需要一个连接处理时间。当遇到请求的时间间隔小于数据处理的时间时,因为第一次的处理还没有完成,所以取出的结果仍是变化前的值。因此,出现了只加了一次的现象。

如果要作计数,可以考虑在库中添加访问记录的方式:将客户端的IP等信息存入库中,统计记录条数就可以得出访问次数。还可以避免重复访问等问题。如果觉得数据量太大,可以做个程序,定时将前N天的数据做个数量记录,并将前N天的记录清理。

#3


再顶上去:

嗯,多谢各位,不过现在的问题是一般访问可以,就是压力测试通不过,

用JDBC连接池,用压力测试工具压时,计数器页面过几分钟就变成空白的了,后台开始报“无内存来执行相应的操作”,重启就好了,可一压又不行了。在程序里写了关闭连接。而且在weblogic中设置了Enable Connection Leak Profiling,Allow Shrinking,Inactive Connection Timeout为2秒,可还是不行.

大侠们给个解决办法吧

#4


增大web server的虚拟内存

#5


synchronized

#6


直接在内存中存储统计数据,每隔一段时间写入数据库,每次都操作数据库,系统压力太大了

#7


synchronized returnvalue youmethodname()
{
insert database code
}

使用同步

#1


用SESSION不好吗,也许会改善的哦

#2


访问数据库需要一个连接处理时间。当遇到请求的时间间隔小于数据处理的时间时,因为第一次的处理还没有完成,所以取出的结果仍是变化前的值。因此,出现了只加了一次的现象。

如果要作计数,可以考虑在库中添加访问记录的方式:将客户端的IP等信息存入库中,统计记录条数就可以得出访问次数。还可以避免重复访问等问题。如果觉得数据量太大,可以做个程序,定时将前N天的数据做个数量记录,并将前N天的记录清理。

#3


再顶上去:

嗯,多谢各位,不过现在的问题是一般访问可以,就是压力测试通不过,

用JDBC连接池,用压力测试工具压时,计数器页面过几分钟就变成空白的了,后台开始报“无内存来执行相应的操作”,重启就好了,可一压又不行了。在程序里写了关闭连接。而且在weblogic中设置了Enable Connection Leak Profiling,Allow Shrinking,Inactive Connection Timeout为2秒,可还是不行.

大侠们给个解决办法吧

#4


增大web server的虚拟内存

#5


synchronized

#6


直接在内存中存储统计数据,每隔一段时间写入数据库,每次都操作数据库,系统压力太大了

#7


synchronized returnvalue youmethodname()
{
insert database code
}

使用同步