我们运行许多 Tomcat 服务器并观察到完整的垃圾回收 (GC) 通常每小时执行一次,尤其是在内存使用率相对较低的情况下。准确的时间似乎与应用服务器启动的时间有关;如果服务器在 01:13 启动,则在 02:13 完成一次完整 GC,下一次完整 GC 将在 03:13 发生。我找不到任何文档来解释这种行为。
这是一个问题,因为同时启动的服务器池都倾向于在同一时间进行完整的 GC。如果 GC 延迟足够长,导致负载均衡器将服务器标记为关闭,则整个应用程序可能会离线一段时间。如果完整的 GC 可以分布在一段时间内会更好,这样就没有两台服务器同时进行完整的 GC,但我找不到任何方法来控制这种行为。
有没有其他人看到过这种行为?有什么方法可以影响这些“常规”完整 GC 何时发生?