我们正在为我们的应用程序使用Elastic Search Nest客户端,我们在将文档插入Elastic Search DB时进行了负载测试测试,我们发现存在性能问题。
索引大小2Kb,碎片计数5,副本1,单实例DB(无群集)
最终结果统计数据我们每秒只能插入3条记录..这是预期的结果吗?
当我们增加客户端线程时,结果变为每秒2条记录,请提示
测试用例
5个并行线程,每个线程同步推送记录(10000)。大约需要50分钟(每个线程),每秒插入3个记录。
我在应用程序启动时创建了N(此测试用例为5)个客户端数量,并将其重新用于所有请求。
服务器详细信息: 16GB RAM,64位操作系统,Intel Core i7,Windows Server 2008 R2,500 GB硬盘
客户端机器: 16GB RAM,64位操作系统,Intel Core i7,Windows 7专业版
答案 0 :(得分:1)
如果您不使用批量API,则无法获得良好的性能。
从5.0开始,我们fsync
磁盘上的每个请求。
可以包含例如10 000个索引请求的批量请求将fsync
一次。
10 000个索引请求将产生10 000个fsync操作。
例如,在我的数据集上,从2.x切换到5.x我观察到以下结果:
单一索引操作:
批量操作:
如果您希望将index.translog.durability
索引设置更改为async
,则可以使用,但如果出现问题,您将承担使用dataloss的风险。
详细了解Translog