ElasticSearch内存索引是否很快?

时间:2015-08-10 07:01:13

标签: elasticsearch

我在弹性搜索中有2个索引,其中一个在默认存储类型上运行,另一个在内存存储类型上运行。我已经为这两个索引中的每一个插入了100,000个文档,默认存储索引比ram索引快1秒。那是为什么?

并且在搜索时,默认索引也很快。

我的ES服务器正在SSD上运行。 有人可以解释一下为什么内存索引比SSD上的一个商店慢吗?

2 个答案:

答案 0 :(得分:1)

您必须在负载测试期间监控JVM和系统内存的运行情况,以便真正了解正在发生的事情。

memory索引选项可以对操作系统内存管理器起作用。它还可以通过使JVM更加努力地释放空间来增加垃圾收集暂停。

default选项(64位Linux系统上的mmapfs)允许操作系统以更有效的方式管理缓存/交换内存页面。

1秒是针对小索引的查询的大量增加的延迟。如果我冒险猜测,我会说你的memory索引不是100%驻留在物理内存中,因此操作系统必须在查询之前从虚拟>物理中交换不必要的大页面完整。

本文详细介绍(来自Solr上下文,但底层的Lucene实现是相同的):http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html

尝试增加系统内存,或者针对较少数量的文档进行测试,看看是否存在差异。

答案 1 :(得分:1)

最好的办法是在系统上完全禁用交换。 你可以尝试:

#sudo swapoff -a

或编辑您的/ etc / fstab

您还可以阻止操作系统交换JVM。在elasticsearch.yml:

bootstrap.mlockall: true