| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
suninformation
14年前发布

JavaWeb应用多用户高并发请求相同URL时出现回应结果混乱问题

最近又一个新的问题出现,有客户反映登录后导航菜单树的根分组信息偶尔会出现当前用户加载其它用户数据的现象,应用程序运行环境是四台WebLogic服务器节点,由F5做负载均衡;
前端采用的是ExtJS框架+Ajax技术,业务逻辑代码均采用Servlet实现;
在了解了情况后,首先进行了代码排查,未发现问题;
由于用户的登录信息是保存在Session中的,所以任何用户读取菜单分组信息都是通过相同的URL地址进行请求,考虑会不会是F5有对相同的URL请求有缓存,于是单独写了一个测试程序,同时模拟3个用户登录,对此URL地址做并发请求1000次,结果发现这三个用户中的两个用户的请求回应中确实有4~5次的回应结果是另外一个用户的菜单分组信息;
我所了解的缓存一般都是通过请求URL地址去匹配的,于是我将URL参数进行了变化,即每次请求的URL都加上一个随即数,用于区别为不同的请求,重新执行了模拟登录并发操作,结果还是一样!
这是怎么回事儿呢,现在想脱离F5(此设备由其它厂商维护,不请楚具体设置),采用直接向WEB应用做并发测试,于由公司的服务器都是普通的PC,并发大了就无响应了,正在积极解决此问题!
在这里发贴是想请教各位,有没有遇到过此类问题的?帮兄弟分析一下,给个思路!

问题已解决,原因是变量最定义为成员变量,从Session中取的值最放置其中,当并发请求时此值被改变所致!