Linux 垃圾收集期间负载平衡器和Tomcat之间的SocketException
我们注意到以下问题:每当Tomcat JVM执行完全GC时,在LB和Tomcat之间创建连接的请求都会失败。这是一个很大的问题,因为所有这些请求永远不会有机会到达应用服务器 即使我们将一只雄猫指向另一只雄猫,但中间没有任何LB,这个问题也会发生 在JVM/Tomcat/Linux中是否有任何定义可以使HTTP连接等待时间,直到GC结束,并且应用程序JVM将接收请求 我们正在使用Java6、Tomcat7和Linux Ubuntu操作系统 谢谢,Linux 垃圾收集期间负载平衡器和Tomcat之间的SocketException,linux,garbage-collection,jdk1.6,tomcat7,Linux,Garbage Collection,Jdk1.6,Tomcat7,我们注意到以下问题:每当Tomcat JVM执行完全GC时,在LB和Tomcat之间创建连接的请求都会失败。这是一个很大的问题,因为所有这些请求永远不会有机会到达应用服务器 即使我们将一只雄猫指向另一只雄猫,但中间没有任何LB,这个问题也会发生 在JVM/Tomcat/Linux中是否有任何定义可以使HTTP连接等待时间,直到GC结束,并且应用程序JVM将接收请求 我们正在使用Java6、Tomcat7和Linux Ubuntu操作系统 谢谢, Yosi您是否考虑过使用“XX:+useConMa
Yosi您是否考虑过使用“XX:+useConMarkSweepGC”选项使用并发垃圾收集器?这实际上是在后台执行垃圾收集,这样就不会有那么多(如果有的话)“停止世界”的完整地面军事系统。您可能需要启用中所述的并发垃圾收集
还可以尝试其他GC配置。我已经尝试了这些选项,按钮行是完全GC可能会在某个点发生,我不想在暂停期间丢失尝试连接的客户端,这就是为什么我要在TCP级别的定义中寻找一些东西,尽管你永远不能保证完全GC不会发生,你可以在实践中预防它们。首先,确保tomcat的堆大小适当。其次,您可以使用以下选项触发启动后台集合的点:-XX:cmSinitiatingOccupencyFraction=。例如,值75将在堆达到75%容量时启动后台收集。您需要调整这两个设置,以确保XX:cmSinitiatingOccupencyFraction足够低,以便后台收集器在堆完全耗尽之前有时间运行(否则将导致完全GC)。XX:CMSinitiatingOccessyFraction还需要足够高,以便在卸载系统时不会永久触发后台收集器。
-XX:+UseConcMarkSweepGC