1

这几天,我们遇到了一个奇怪的问题,我们在tomcat上的一些solr应用程序经常因为大量连接而超时。

几天前,我们添加了gc arg -XX:+ExplicitGCInvokesConcurrent,所以我们尝试删除这个arg,连接数下降了,超时时间也下降了。

但是我们的一些带有这个 gc arg 的应用程序没有遇到这个问题,生病的应用程序和健康的应用程序之间的区别是 jdk 版本。生病应用的jdk版本是1.6.0_21,健康应用是1.6.0_26。

更改jdk版本也可以解决问题。

有人可以说这是旧版本 jdk 的错误,还是 gc args 的错误?

4

2 回答 2

1

如果您要删除-XX:+ExplicitGCInvokesConcurrent所有由System.gc()和发出的呼叫,Runtime.getRuntime().gc()将导致长时间的暂停时间。如果健康的应用程序没有这些调用,那可能是生病的应用程序的问题,那么您可能会遇到问题。

我不确定 jdk 错误,但可能问题出在应用程序的某个地方。

于 2012-06-19T13:11:46.350 回答
1

是的-XX:+ExplicitGCInvokesConcurrent,旧 JDK 的使用似乎有问题。你可以看看这个错误,从 6u22 开始就解决了(有趣的是你说 6u21 失败而 6u26 有效)。

于 2012-06-19T13:57:53.457 回答