我的 jmx 监控有问题。我们使用 jmx 监控一些 jvm 的 perm gen。但有时 mbean 的名称会从“PS Perm Gen”更改为“Perm Gen”,反之亦然。它发生在tomcat服务器的重新启动时,但不是每次重新启动时都会发生。
jvm 版本是 1.5.0_16。
有没有人遇到过这个问题,也许有解决方案?
是否可以将 mod_jk 粘性会话信息复制到另一个 apache 以进行故障转移设置?
问题背后的想法是在一些tomcats前面设置两个带有粘性会话的apache。当一个 apache 失败时,另一个应该接管 mod_jk 会话信息,这样他就知道哪些请求服务于哪个 tomcat。
我知道另一种方法是在 tomcat 级别进行会话复制,而不是使用粘性会话,但目前这是不可能的。
我遇到了一个 apache 的问题,他因为太多的请求而停滞不前。当我查看服务器状态页面时,我可以看到大多数连接都处于“读取请求”状态,但没有完成。当我进行正常重启时,所有“阅读请求”连接都消失了。因为重启不需要很长时间,我相信连接不再使用。
Apache 在一段时间内(> 30 分钟)会填满这些请求。但是当不再使用连接时,我希望有一些超时来终止这些连接,但这不会发生或超时太大。
有谁知道哪个超时应该终止这些连接,还是我在错误的地方搜索?
设置的一些细节:
apache 2.0.55 on HP-UX with mod_jk 1.2.10
大多数处于“读取请求”状态的连接都是通过 mod_jk 连接到 tomcat 后端(客户端 --> HP-UX apache --> Tomcats ),但不是全部。
我知道mod_jk是一个很老的版本,计划很快更新。
但我不怀疑 mod_jk,因为当使用较新的 mod_jk 将连接重定向到另一个 apache,然后将连接重定向到 tomcats(客户端 --> HP-UX apache --> Linux apache --> Tomcats)时,会出现相同的效果。它总是充满“RR”连接的 HP-UX apache。
我必须创建堆转储,这与 jmap 配合得很好。我的问题是,jmap 需要很长时间才能创建 heapdump 文件。特别是当堆变大(> 1GB)时,它会花费太长时间。
以一种情况为例:
当服务器遇到堆空间问题时,我想自动重新启动它并在重新启动之前创建一个 heapdump。这可行,但编写堆转储需要很长时间。这样服务器停机时间太长了。堆转储创建需要超过一小时。
我知道-XX:+HeapDumpOnOutOfMemoryError
,但大多数时候我可以在 jvm 抛出异常之前找到内存问题。
是否有 jmap 的替代方法可以更快地写入堆转储?
对于上述示例的特殊解决方案也将不胜感激。
这个问题是编程和系统管理之间的混合,但我认为我来对地方了。