Pivotal Knowledge Base

关注

避免内存分页造成的长GC暂停

适用范围:

      所有版本的Gemfire

目的:

       本文的目的是说明,为何swappiness的正确设定对于Gemfire分布式系统非常重要,以及如何正确的设定该值。

描述:

      内存交换(swapping ),也被称为内存分页(paging),作为辅助存储用于保存和恢复内存中使用的应用数据。操作系统在默认情况下,即使尚未处于内存不足时,也有可能将一些使用率较低的进程或者堆内存交换出(swap out)。内存交换是为了让系统随时准备应对极端情况下的内存请求,但是针对Gemfire JVM应该避免使用该功能。
      Linux系统中swappiness的数值处于0到100之间,更高的数值鼓励将更多地内存交换到交换区中。其默认值为60。对于Gemfire而言,swappiness应该一直被设定为0以禁用此功能。这样可以把内存换出的工作转由依靠overflow的Gemfire来完成,而不是由操作系统自行决定。
      内存交换会对Gemfire的性能表现造成非常明显的影响并应该避免。通常,内存交换会表现为由于长时间未响应造成Gemfire节点被排除出分布式系统。
      为了避免交换,确保主机上有足够RAM内存可供使用并列出所有运行中的进程以免所有可用RAM被耗尽。诸如top这样的工具可用用于监控内存交换率。
      

为查看当前设定的swappiness值,请在命令行中输入如下命令:

cat /proc/sys/vm/swappiness

为了swappiness的设定永久生效,需要在/etc/sysctl.conf 文件中修改:

vm.swappiness=0

评论

由 Zendesk 提供技术支持