将大型服务器应用程序从运行EJB 3.0的JBOSS 4.0.5迁移到运行EJB 3.1的JBOSS 6.1.0后,我注意到当并发(100+)访问有状态bean和方法时,响应时间一致增加调用
在几个测试中,方法调用的平均响应时间在旧环境中大约是几毫秒,而在较新版本上,在相同系统上平均值大约为数百,所有内容都在本地运行,因此排除了网络问题。 (主要是setter)(SFB查找在本地完成)
如何进一步调查导致这种情况的原因?
答案 0 :(得分:0)
我的想法
有状态会话Bean的生命周期
http://docs.oracle.com/javaee/6/tutorial/doc/giplj.html#gipln
在Jboss中,如果缓存变得太满或bean太旧,Bean会从Ready状态转为Passive状态。
http://docs.jboss.org/ejb3/docs/reference/1.0.7/html/SessionBean_and_MDB_configuration.html
我认为“完全缓存”可能是导致响应延迟的原因之一,因为它会开始钝化有状态会话bean。确认这一点的一种方法是将调试日志添加到有状态会话Bean中的PrePassivate回调函数,并逐渐强调应用程序观察行为。