为什么在禁用交换时弹性search报告交换?

当试图禁用JVM交换时,我禁用了Windows计算机上的分页并重新启动:

在这里输入图像说明

在通过Elastic HQ查看集群健康状况时,我发现JVM非常互换:

在这里输入图像说明

为什么这样? 即使分页为0 MB,读数是否不准确或交换发生?

这有点奇怪,但是通过启用mlockall可以禁用交换行为。

mlockall将尝试将进程地址空间locking到RAM中,防止任何Elasticsearch内存被换出。 这可以通过将此行添加到config / elasticsearch.yml文件来完成:

bootstrap.mlockall: true 

Elastic HQ使用以下方法获取交换值:

 formula:"stats.os.swap.used_in_bytes / 1024 / 1024" 

IIRC,ES使用sigar提供“stats.os.swap.used_in_bytes”, sigar使用“Paging Files”性能计数器来最终获得ES使用的页面文件的字节数。

你可以通过发行来重复检查这个计数器值

 Get-Counter '\Paging Files\% Usage' 

在Windows电源shell。