0

虚拟机:

4CPU 10GB RAM 10GB 交换

Java 1.7 -Xms=-Xmx=6144m

雄猫 7

我们观察到 JVM 的一个非常奇怪的行为。JVM 常驻内存开始缩小,交换使用率飙升至 50% 以上。

请参阅以下监控工具的统计数据。

http://i44.tinypic.com/206n6sp.jpg http://i44.tinypic.com/m99hl0.jpg

任何理解这一点的指针都将不胜感激。

谢谢!

4

2 回答 2

0

或者也许你的 Java 程序是空闲的,它不需要那个内存,而且你有很高的 swappiness?在这种情况下,您的操作系统会释放 RAM 以防万一,只留下使用过的部分。

在我看来,这实际上是一种很好的行为,为什么要浪费 RAM 来处理不使用它的进程呢?

除非你在 VM 上只运行这一个进程,否则最好将 swappiness 设置为 0 或其他小数字 - 该内存已分配给该单个进程,因此我们可以禁用交换它。

于 2013-11-09T09:23:21.970 回答
0

感谢您的回复。是的,这比 Java 更接近于系统故障排除,但我认为这是发起该主题的正确论坛,以防有人在 JVM 中看到过这种现象。

无论如何,我已经检查了顶部,除了 Java 之外没有其他进程需要内存。实际上,第二个顶级进程正在使用 72MB (RSS)。

不,此系统上的 swappiness 设置不激进,但默认设置为 60。我想分享的另一个信息是,我们在集群中有 4 个应用程序服务器,并且都完全同时显示了这种行为。AFAIK,JVM不会换出,但操作系统会。但这一切让我感到困惑。

所有这些应用服务器都是生产和繁忙的服务请求,所以不会闲置。使用的堆大小为 6GB 的平均 5 GB。

我发现的另一件有趣的事情是同时在 Vmware 日志中出现一些失败的消息,这正是我正在调查的内容。

于 2013-11-11T03:42:18.847 回答