Коллеги, добрый день.
Помогите, пожалуйста, разобраться.
У нас кластер из 9 дата-нод, 3 мастера, одна нода координации. Более 100000 записей в секунду.
Очень часто последнее время возникают 429 ошибки.
Сейчас осуществляем мероприятия по снижению кол-ва шардов по бестпрактикс кол-во памяти под кучу *20 но не суть( сейчас у нас 650 осколков при 16гб кучи).
Вопрос в том,что мы видим следующую зависимость. Если какая-то нода из 9 перегружена по I/O например 40 и более процентов, падает скорость записи/чтения по всем узлам. И вылетает множество 429 ошибок.
Вопрос, запись/чтение с дата-нод происходит синхронно? У нас elasticsearch 7.3.2.
Что ещё можно сделать кроме как снизить количество осколков и нарастить объем памяти на каждой ноде (и кстати нужно ли придерживаться правила, что под jvm дата-нод надо выделять 50% от всей ОП сервера)
Про этот процесс можно прочитать в https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-replication.html
Запись происходит с помощью потоков из write thread pool, который по умолчанию содержит столько же потоков, сколоко на машине процессоров и очередь из 200 записей. Когда ваш клиент посылает запрос на запись, это запрос может содержать записи из нескольких шард. Запись на каждой шарде будет занимать 1 поток. То есть один поток на клиенте будет занимать количество потоков в кластере, равное количеству шард в индексе, в который вы пишите. Когда количество одновременных запросов на узле превышает количество процессоров, то дополнительные записи помещаются в очередь, когда очередь переполняется - узел выдает ошибку 429, которая означает, что клиенту необходимо замедлить посылку сообщений.
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.