为什么这些 Tomcat 服务器的 JVM 每小时执行一次 Full GC?

2024-03-09

我们运行许多 Tomcat 服务器,并观察到完整的垃圾收集 (GC) 通常每小时执行一次,特别是当内存使用率相对较低时。精确时间似乎与应用程序服务器启动的时间有关;如果服务器在 01:13 启动,则在 02:13 完成一次 Full GC,下一次 Full GC 将在 03:13 发生。我无法找到任何文档来解释这种行为。

这是一个问题,因为同时启动的服务器池往往会在大约同一时间执行完整的 GC。如果 GC 延迟足够长,导致负载均衡器将服务器标记为关闭,则整个应用程序可能会离线一段时间。如果完整的 GC 可以分布在一个时期内,这样就没有两个服务器同时执行完整的 GC,那就更好了,但我找不到任何方法来控制这种行为。

还有其他人看到过这种行为吗?有什么方法可以影响这些“常规”完整 GC 的发生时间吗?


您每小时“定期”的 GC 可能是由于这个已知的错误 https://issues.apache.org/bugzilla/show_bug.cgi?id=53267, "当 gcDaemonProtection=true 时,JreMemoryLeakPreventionListener 每小时导致一次完整 GC".

确认您的 Tomcat 版本和值gcDaemonProtection你的财产JreMemoryLeakPreventionListener(默认为true).

据称该补丁包含在 Tomcat v.7.0.28+ 和 v.6.0.36+ 中。

升级您的服务器,或选择非升级解决方案here http://mail-archives.apache.org/mod_mbox/tomcat-users/201008.mbox/%3CAANLkTino=BjP5LsBCwncB2HvNDzyKLr5y-8yWdt15a89@mail.gmail.com%3E,总结为:

  1. 使用 JVM arg 抑制完全垃圾收集-XX:+DisableExplicitGC
  2. 保留完整的 GC,但使用 JVM arg 遵循 CMS 收集器-XX:+ExplicitGCInvokesConcurrent
  3. set <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" gcDaemonProtection="false"/>
  4. 禁用监听器

信用到期时信用;我的初步答案来自here https://stackoverflow.com/questions/8916002/tomcat-garbage-collecting-frequency/14601304#14601304.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这些 Tomcat 服务器的 JVM 每小时执行一次 Full GC? 的相关文章

  • 如何在 Eclipse 中用阿拉伯语读写

    我在 eclipse 中编写了这段代码来获取一些阿拉伯语单词 然后打印它们 public class getString public static void main String args throws Exception PrintS
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • 使用 Checkstyle Plugin 时从插件调用代码时出现问题:“org.eclipse.jface”

    我正在尝试在 Rational Software Architect 7 0 0 4 上使用 eclipse cs 插件 我最近卸载了旧的 beta2 版本并安装了 beta3 插件本身按照之前的配置工作 但是每当我尝试通过 Windows
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr

随机推荐

  • 使用队列进行基数排序

    我想创建一个基数排序 http en wikipedia org wiki Radix sort使用队列实现 我无法弄清楚我的代码的哪一部分有问题或者我应该阅读哪些资源 我的代码可能完全错误 但这是我的实现 没有任何帮助 我还没有参加数据结
  • 不带重定向的不记名令牌 WEB API asp.net core

    我是 ASP NET Core 的新手 我正在尝试使用来自 Google Facebook 的 jwt 身份验证和 OpenOauth 制作一个小型 Web 服务 我读过这篇文章 https stormpath com blog token
  • System.Windows.Threading.DispatcherTimer 在哪里?

    快到长周末了 我正在尝试创建一个 DispatcherTimer 我找到了一些示例代码 但由于缺少命名空间而无法运行它 我有命名空间 System Windows Threading 但我可以在哪个程序集中找到它 我尝试了 System S
  • Pandas GroupBy 中的计数和连接整数

    假设这是我的 df A B C 0 a 33 13 1 b 44 14 2 a 55 15 3 a 66 16 4 b 77 17 5 c 88 18 我尝试得到这样的东西 A B B C count list sum 0 a 3 33 5
  • 如果类列表包含多个特定类

    我需要一个函数来触发元素recordplayerstick包含pinplace or pinsongplay班级 我当前的代码返回语法错误 这样做的正确方法是什么 if document getElementById recordplaye
  • LINQ to DataTable 简单快速

    我是 LINQ 新手 我想将 LINQ 查询转换为 DataTable DataClassesDataContext db new DataClassesDataContext MyConncectionString IEnumerable
  • INVoiceShortcutCenter.shared.getAllVoiceShortcuts 在 iOS 13 中不会返回任何内容

    我不确定我做错了什么 但在这个方法中 INVoiceShortcutCenter shared getAllVoiceShortcuts vShortCuts error in print vShortCuts vShortCuts 是一个
  • 填充形状的图像不会在 FabricJS 中使用 loadFromJSON 加载

    I have JSON带有 Fabric Rect 对象的数据 当我尝试加载这个时JSON数据到织物画布上从JSON加载 形状加载完美 但形状中填充的图案未渲染 仅在单击形状后才会渲染图案 我已将我的代码复制到织物厨房水槽执行模块中 并尝试
  • 无法使用 Apache POI 读取 Excel

    我正在使用 Apache POI 读取 excel 但它不断给出 XSSFWorkbook 类定义发现错误的错误 我使用了不同版本的 Apache poi jar 库 即 4 1 4 0 和 3 12 但它们似乎都没有修复此错误 这是当前导
  • 从 Graphite 迁移到图形浏览器

    石墨网络应用程序不鼓励临时绘图 Graphiti 等人只是花哨的 UI 虽然改进了 UI UX 但对于困扰 Graphite Webapp 的固有线性度量搜索没有做太多事情 如果这里错了请纠正我 但是only我遇到的鼓励临时绘图的选项是图形
  • 请求:网络应用程序的最小框架

    我即将构建一个框架 将 xml 带有嵌入代码 解析为具有 ajax 功能的自动生成的 Web 应用程序 现在 我不想重新发明轮子 所以感谢任何现有的可用解决方案 归结为 有可用的框架吗 这为我创建了回调代码等 最好是php If not 适
  • 如何在 MVC4 中使用 type="url" 而无需 jQuery 将字段验证为 URL?

    情况是这样的 我这里有一个很大的 URL 文本输入框 https asafaweb com https asafaweb com 不过 这不需要遵守 URL 的严格定义 我允许没有方案的地址 然后出于可用性目的默认为 HTTP 例如 sta
  • 如何在iOS中制作一个水平可滚动的UITabBar?

    我的应用程序中的 UITabBar 由 10 多个项目组成 但宽度足以放置所有 10 多个项目 如何在 iOS 中制作水平可滚动的 UITabBar Thanks 至少在某种程度上 你必须自己动手 What might工作 将创建一个 UI
  • mapM 的惰性版本

    假设我在使用 IO 时收到了大量的项目列表 as lt getLargeList 现在我正在尝试申请fn a gt IO b onto as as lt getLargeList bs lt mapM fn as mapM有类型mapM M
  • 大查询将重复字段中的结构更新为 null

    在 Google bigquery 中 我试图对重复字段进行更新 为了进行比较 这是可行的 或者至少被标记为有效 但当然实际上并没有更新该字段 UPDATE my table t SET my field ARRAY SELECT AS S
  • anaconda 在 Windows 上安装 python 3.4

    我想使用 Anaconda 安装和使用 python 3 4 及其众多库 例如 numpy pandas 等 不幸的是 我无法激活 python 3 4 我在 Windows 8 笔记本上安装了 Acaconda 2 0 Anaconda
  • debezium 无法使用带有默认插件 pgoutput 的 postgres 11 访问文件“decoderbufs”

    我是 kafka 新手 我正在尝试使用 debezium postgres 连接器 但即使使用带有标准插件的 postgres 版本 11 我也会收到此错误 org apache kafka connect errors ConnectEx
  • 使用 Django 在 teamcity 中测试覆盖率

    我已经让 teamcity 工作了 它构建并运行了一个自定义测试运行程序 http pypi python org pypi teamcity messages http pypi python org pypi teamcity mess
  • 选择列值已更改的行

    假设我有下表 Value Time 0 15 06 2012 8 03 43 PM 1 15 06 2012 8 03 43 PM 1 15 06 2012 8 03 48 PM 1 15 06 2012 8 03 53 PM 1 15 0
  • 为什么这些 Tomcat 服务器的 JVM 每小时执行一次 Full GC?

    我们运行许多 Tomcat 服务器 并观察到完整的垃圾收集 GC 通常每小时执行一次 特别是当内存使用率相对较低时 精确时间似乎与应用程序服务器启动的时间有关 如果服务器在 01 13 启动 则在 02 13 完成一次 Full GC 下一