Ожидающие задачи кластера - это обновления состояния кластера, которые могут быть инициированы непосредственно пользователем или самим кластером.
Обратите внимание, что ожидающие задачи кластера - это конкретные задачи, связанные с состоянием кластера, и они не обязательно совпадают с задачами из API задач (хотя может быть некоторое совпадение). API задач относится к задачам, созданным пользователями или кластером, но они не обязательно связаны с состоянием кластера. Причина особой озабоченности состоянием кластера заключается в том, что задержки в выполнении этих задач могут привести к потере согласованности данных в кластере.
Как решить проблему
Вы можете получить список ожидающих выполнения заданий кластера, выполнив команду:
1 | GET _cluster/pending_tasks |
Очень часто этот запрос возвращает пустой список, потому что задачи кластера обычно выполняются очень быстро, и поэтому очередь задач, которые должны быть выполнены, пуста.
Однако если в очереди есть невыполненные задачи, вы можете получить ответ, подобный этому:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | { "insert_order": 109, "priority": "URGENT", "source": "create-index [logs_23], cause [api]", "executing" : true, "time_in_queue_millis": 76, "time_in_queue": "76ms" }, { "insert_order": 36, "priority": "HIGH", "source": "shard-started ([logs_21][1], node[dMofQyuriet30A], [P], s[INITIALIZING]), reason [after recovery from shard_store]", "executing" : false, "time_in_queue_millis": 642, "time_in_queue": "642ms" }, { "insert_order": 66, "priority": "HIGH", "source": "shard-started ([logs_2][0], node[dMofQyuriet30A], [P], s[INITIALIZING]), reason [after recovery from shard_store]", "executing" : false, "time_in_queue_millis": 651, "time_in_queue": "651ms" } ] } |
Параметр insert_order указывает на порядок добавления элементов в очередь, executing (true или false) - на то, выполняется ли задание в данный момент, а source - на объяснение того, почему задание необходимо.
Кластер "Отложенные задания" обычно выполняется автоматически и решается без вмешательства оператора. Имейте в виду, что если у вас есть отложенные задания, то это, скорее всего, следствие, а не причина проблемы с кластером.
Для дальнейшей диагностики проблемы полезно проверить журналы текущего активного главного узла, ища ошибки или проблемы, которые мешают главному узлу выполнять задачи в соответствии с ожиданиями.
Типичными причинами могут быть:
- Другие процессы, запущенные на главном узле (невыделенные главные узлы), которые мешают главному узлу иметь достаточно ресурсов для выполнения задач в соответствии с требованиями.
- Перерасход ресурсов, как объясняется здесь: https://g-soft.info/opensearch/12007/opensearch-izbytochnost/.
- "Упавшие" ноды
- Переполненные диски, мешающие правильному распределению шардов