在将弹性搜索群集从HDD移动到SSD磁盘之前,我决定比较这些解决方案的性能。结果对我来说绝对是意料之外的:使用hdd的elasticsearch(ES)比使用ssd的ES的工作速度快一点 我想我错过了一些重要的配置。
所有测试均在Google Compute Engine虚拟机上运行。
使用了两台机器(标记为S和H):
简单的python脚本将请求发送到一台计算机,并保存每20秒的平均延迟统计数据。索引和查询的统计信息将单独保存。搜索请求和索引数据是随机生成的,但具有相同的参数。生成的文档具有相同的属性,具有相同数量的ascii符号。明显地放置了文档类型的映射。脚本在10个线程中发送请求3小时。
根据Elasticsearch官方网站上的文章中的建议,ES上的ES有一个非默认配置:
index.merge.scheduler.max_thread_count: 1
(它允许仅在单线程中将索引数据合并到磁盘上)
和S上的ES有另一种非默认配置:
index.store.throttle.type: none
(禁用每秒可以合并到磁盘的数据的任何限制)
我预计SSD会明显快于HDD
但查询结果如下:
https://www.dropbox.com/s/d9xx2ed36wxqxko/Querying.png?dl=0
对于索引:
https://www.dropbox.com/s/djhaor4fzig82eh/Indexing.png?dl=0
(不幸的是我是stackoverflow的新手,我的声誉不允许我发布图片)
图表显示,就我而言,硬盘上的ES比SSD上的ES工作速度快一点。
部分是因为我使用了远程SSD。但HDD也很遥远。谷歌的文档说远程SSD有时比硬盘快。
在计算引擎上比较持久性SSD和HDD:
cloud.google.com/compute/docs/disks/#comparison_of_disk_types
我可以解释一下我做错了什么吗?应该设置哪些elasticsearch配置才能使用完整的SSD性能?