使用弹性搜索嵌套

时间:2016-12-16 05:57:55

标签: elasticsearch nest elasticsearch-net

我们正在为我们的应用程序使用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专业版

1 个答案:

答案 0 :(得分:1)

如果您不使用批量API,则无法获得良好的性能。 从5.0开始,我们fsync磁盘上的每个请求。

可以包含例如10 000个索引请求的批量请求将fsync一次。 10 000个索引请求将产生10 000个fsync操作。

例如,在我的数据集上,从2.x切换到5.x我观察到以下结果:

  • 单一索引操作:

    • 2.x:200 docs / s
    • 5.0:20 docs / s
  • 批量操作:

    • 2.x:12000-15000 docs / s
    • 5.0:12000-16000 docs / s

如果您希望将index.translog.durability索引设置更改为async,则可以使用,但如果出现问题,您将承担使用dataloss的风险。

详细了解Translog