Отбрасывание запросов Elasticsearch при перегрузке системы - PullRequest
0 голосов
/ 25 мая 2018

Есть ли хороший способ отбрасывать запросы Elasticsearch, когда система перегружена?Я знаю, что у ES есть система массовых отклонений, когда она перегружена, но я бы хотел предотвратить любую перегрузку, отбрасывая запросы к ES и моей системе, когда достигается определенный порог / предел.Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Таким образом, есть несколько факторов, которые вы должны контролировать:

1) Проверьте вашу массовую производительность с помощью curl -X GET http://localhost:9200/_cat/thread_pool, вы получите, сколько записей в очереди и сколько записей было отклонено. Проверьте это для получения дополнительной информации. В соответствии с вашим трафиком установите размер очереди и размер очереди индекса как , упомянутый здесь .

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

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

Здесь 24 - число процессоров, которые должны использоваться всеми процессорами.

2) Один развышеупомянутые настройки выполнены, Elasticsearch просто примет ваш запрос навалом и поставит все ваши данные в очередь в соответствии с указанным размером.Но как только ваш трафик превысит ваш объем очереди, он снова начнет отклоняться.Поэтому убедитесь, что вы делаете постоянный массовый запрос через определенный интервал.

3) Увеличьте интервал обновления.По умолчанию он установлен в 1 с, что означает, что ваш документ будет доступен для поиска через одну секунду, но это дорогостоящая операция, поэтому сделайте его 30 с или более, который подходит для вашего кластера ES.Таким образом, ваш документ будет доступен для поиска через 30 секунд.

4) Для получения дополнительной информации вы можете обратиться к этому https://gist.github.com/ashishtiwari1993/004a19f4a44efc214403a7fc1ee27cda

0 голосов
/ 28 мая 2018

Из-за документации вы можете ограничить количество запросов, ограничив queue_size.Значение очереди по умолчанию равно -1, что означает, что она не имеет верхней границы для обработки запросов.

Каждый запрос (операция) имеет свой собственный пул потоков, и каждый пул потоков может относиться к одному из 2 типов:)исправлено и 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...