使用SSD配置Elasticsearch以实现高性能

Ant*_*ton 5 elasticsearch google-compute-engine

在将我的Elasticsearch集群从HDD移到SSD磁盘之前,我决定比较这些解决方案的性能。结果对我来说绝对是出乎意料:具有hdd的elasticsearch(ES)的运行速度比具有ssd的ES快。
我想我错过了一些重要的配置。

我如何测试

所有测试均在Google Compute Engine虚拟机上运行。使用了两台机器(将其标记为S和H):

  • 两者都是带有debian7的n1-standard1(1 cpu,4G内存)
  • 机器S具有10G SSD磁盘
  • 机器H有10G HDD磁盘

简单的python脚本将请求发送到一台计算机,并保存每20秒的平均延迟统计信息。索引和查询的统计信息单独保存。搜索请求和索引数据是随机生成的,但具有相同的参数。生成的文档具有相同的属性,但具有相同数量的ascii符号。文件类型的映射很明显。脚本在10个线程中发送请求3个小时。

如Elasticsearch官方站点上的文章中所建议,H上的ES具有一种非默认配置:

index.merge.scheduler.max_thread_count: 1
Run Code Online (Sandbox Code Playgroud)

(它仅允许在单线程中将索引数据合并到磁盘)

S上的ES具有另一个非默认配置:

index.store.throttle.type: none
Run Code Online (Sandbox Code Playgroud)

(这禁用了每秒可以将多少数据合并到磁盘的任何限制)

结果

我预计SSD将比HDD显着更快。但是结果是:

查询
索引

(不幸的是,我是Stackoverflow的新手,我的声誉不允许我发布图片)

图表显示,就我而言,HDD上的ES比SSD上的ES快一点。

部分原因是因为我使用了远程SSD。但是HDD也是远程的。而且Google文档说,远程SSD有时要比HDD快。

比较计算引擎上的持久性SSD和HDD

有人可以解释一下我在做什么错吗?应将哪些Elasticsearch配置设置为使用完整的SSD性能?