我在从Resin迁移到GlassFish v3.0.1的Web应用程序中遇到了问题。 在回归测试期间(使用Selenium)它已经开始挂起。浏览器显示没有源的空页 - 没有元,没有头没有主体(Firefox和IE)。
我认为这是Selenium的问题。但问题是手动复制的,也是在IE8,FireFox 4,Chrome 6中使用的。使用了不同的客户端机器,包括Windows和UBuntu 10.01(因此排除了防病毒影响);
在事故中我使用jvisualvm在JMX上制作了一些快照(THREAD甚至是HEAP)。 分析线程显示服务器上有一个服务器浏览器请求并且状态为“WAIT”的线程。监视等待HEAP转储中不存在的对象实例#123456(在NetBeans中使用OQL进行查询)。
还调查了DB-pool(启用了精细日志记录,然后通过JMX监视器JDBC-POOL-MON)。 Oracle 11g企业就像数据库一样使用。使用驱动程序11.2.0.1ga。 JDK 1.6.0_21 x64服务器模式。 JDBC池的最大允许大小为:50 conn。 JDBC的最大监视大小为10(启动连接数量),使用连接的峰值仅为7.连接泄漏也被激活。没有检测到超过2小时的回归测试。
HTTP线程池允许200个线程,其中峰值为181个活动线程,通常为114个恶魔线程。
Grizly像WEB服务一样用于静态文本缓存和gzip压缩。 NIO是活动的,我已经尝试了tcp的java和本机缓冲区。
我的一些朋友告诉我,不要直接使用Grizly,而是预先安装Apache Web Server并使用mod_proxy。 没试过但我想只使用没有Apache Web Server的GlassFish v3。我希望它可以显示更好的输出。
无论如何,我没有任何想法可能是这种奇怪行为的原因。 任何想法都可以帮助很多!
p.s。:在Resin应用程序下,在具有相同数据库的同一JDK上工作正常,并使用驱动程序和相同的回归测试。即使在生产中,我们也没有这种问题。
谢谢, 最大