虚拟机:
4CPU 10GB RAM 10GB交换
Java 1.7 -Xms = -Xmx =6144米
Tomcat 7
我们观察到JVM的一个非常奇怪的行为。 JVm驻留内存开始缩小,交换使用量猛增至50%以上。
请参阅以下监控工具的统计数据。
http://i44.tinypic.com/206n6sp.jpg http://i44.tinypic.com/m99hl0.jpg
任何了解这一点的指示都很感激。
谢谢!
答案 0 :(得分:0)
或许你的Java程序是空闲的,它不需要那个内存,而你的swappiness很高?在这种情况下,您的操作系统将释放RAM以防万一,只留下使用过的部分。
在我看来,这实际上是很好的行为,为什么你应该为不使用它的进程浪费RAM?
除非你在VM上只运行这一个进程,否则将swappiness设置为0或其他小数字是个好主意 - 这个内存被赋予这个进程,所以我们可以禁用交换它。
答案 1 :(得分:0)
感谢您的回复。是的,这比Java更接近系统故障排除,但我认为这是启动此主题的正确论坛,因为任何人都看到了JVM的这种现象。
无论如何,我已经检查了顶部,没有其他进程比Java更渴望内存。实际上,第二个顶级流程正在使用72MB(RSS)。
在此系统上没有设置swappiness,但默认为60.我错过了一个额外的信息,我们在群集中有4个app服务器,并且所有这些都在同一时间显示出这种行为。 AFAIK,JVM不会换出,但操作系统会。但所有这些让我感到困惑。
所有这些应用服务器都是生产和忙碌的服务请求,因此不会空闲。使用的堆大小为6GB的Avg 5 GB。
我发现的另一个有趣的事情是Vmware日志中的一些失败消息同时正是我正在调查的内容。