现在,我们遇到了一个奇怪的问题,tomcat上的一些solr应用程序经常因大量连接而超时。
几天前,我们添加了gc arg -XX:+ ExplicitGCInvokesConcurrent,因此我们尝试删除此arg,连接数下降,超时时间也减少了。
但我们的一些使用此gc arg的应用程序没有遇到此问题,生病应用程序和健康应用程序之间的差异是jdk版本。生病应用程序的jdk版本是1.6.0_21,而健康应用程序是1.6.0_26。
更改jdk版本也可以解决问题。
有人可以说这是旧版本jdk的bug,还是gc args的bug?
答案 0 :(得分:1)
如果您要删除-XX:+ExplicitGCInvokesConcurrent
System.gc()
和Runtime.getRuntime().gc()
拨打的所有来电将导致暂停时间过长。如果健康的应用程序没有这些调用,这可能是生病应用程序的问题,那么可能是您遇到了问题。
我不确定jdk bug但可能是问题在应用程序的某个地方。
答案 1 :(得分:1)
是的,-XX:+ExplicitGCInvokesConcurrent
的使用似乎与较旧的JDK有关。您可以查看this bug,这是自6u22以来解决的(有趣的是你说6u21失败和6u26工作)。