在系统过载时删除Elasticsearch请求

时间:2018-05-25 17:38:26

标签: elasticsearch

在系统过载时是否有一种删除Elasticsearch请求的好方法?我知道ES有一个批量拒绝系统,但是当我达到某个阈值/限制时,我希望通过将请求丢弃到ES和我的系统来防止任何超载。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

由于documentation,您可以通过绑定queue_size来限制请求。 queue的默认值为-1,这意味着它没有任何上限来处理查询。

每个请求(操作)都有自己的线程池,每个线程池可以是a)fixed和b)fixed_auto_queue_size两种类型之一。

绑定固定的:

thread_pool:
    [request/operation]:
        queue_size: X

固定自动一个:

thread_pool:
    [request/operation]:
        queue_size: X
        min_queue_size: Y
        max_queue_size: Z

答案 1 :(得分:0)

因此,您需要控制多种因素:

1)使用curl -X GET http://localhost:9200/_cat/thread_pool检查批量性能,您将获得队列中的记录数以及被拒绝的记录数。 Check this了解更多信息根据您的流量设置批量队列大小和索引队列大小为mentioned here

thread_pool.bulk.size: 24 thread_pool.bulk.queue_size: 200

thread_pool.index.size : 24 thread_pool.index.queue_size : 200

这里24是核心cpus的数量,这确保你的所有CPU都应该使用。

2)完成上述设置后,Elasticsearch将批量接受您的请求,并按照指定的大小排列您的所有数据。但是,一旦您的流量超过批量队列大小,它将再次开始拒绝。因此,请确保在特定时间间隔内进行持续批量请求。

3)增加刷新间隔。默认情况下,它设置为1秒,这意味着您的文档将在一秒后可用于搜索,但其昂贵的操作因此使其成为30秒或适合您的ES群集。因此,您的文档将在30秒后可供搜索。

4)有关详细信息,请参阅此https://gist.github.com/ashishtiwari1993/004a19f4a44efc214403a7fc1ee27cda