Highlighted

Индексы в JIra Server Edited

 Всем привет!

Сегодня в телеграме обсуждали индексы. Я решил здесь написать. как мне кажется, о самых важных моментах об индексах в Jira.

Прежде всего следует сказать, что в Jira Cloud управлять индексами Администратор Jira не может, т.е. нет возможности запустить реиндекс. 

Здесь речь пойдет именно об индексах на Jira Server.

Индексы нужны для ускорения поиска в Jira. Когда мы пишем JQL, то наши запросы идут не в базу данных, а в индексы. Помню, когда начинал заниматься Jira, то всегда боялся лишний раз нагрузить Jira запросами к БД, чтобы это не повлияло на работу Jira, но, как оказалось, все запросы идут через индексы и поэтому БД относительно не сильно нагружена.

В качестве движка для индексов используется Apache Lucene. В Jira 7 используется достаточно старая версия Apache Lucene - 3.3. Это связано с тем, что после этой версии API Lucene сильно поменялось и Atlassian не мог быстро переходить на новые версии Lucene. В Jira 8 это будет сделано. Ожидаемая версия Lucene 7.3.

Информация записывается в индексы:

- при создании и изменении ишью,

- при запуске реиндекса Администратором Jira

В индексах хранится информация о всех полях ишью, комментарии, история изменений и записи о работе. Разработчики плагинов могут писать любую другую информацию в индексы. Но важно помнить, что чем больше информации плагины будут писать в индексы, тем дольше будут работать запросы к Jira.

Некоторые Администраторы Jira запускают реиндекс ежедневно, так как индекс начинает отставать. Это плохая практика. Индексы у Jira просто так не расходятся. Нужно искать причину. 

Реиндексация требуется:

- изменилась конфигурация полей Jira (field configuration scheme)

- добавлены или удалены кастомные поля

- установлены, удалены, перезапущены плагины

- изменились настройки учета времени

Существуют 2 вида реиндекса, которые может запустить администратор.

- Фоновая реиндексация

Jira работает в штатном режиме. Индексация происходит как-будто каждое ишью было обновлено. Если индексация была прервана (перезапустили Jira), то после перезагрузки Jira будет работать, но инфомрация будет обновлена только по тем ишью, по которым процесс реиндексации успел пройтись до перезагрузки Jira.

- Блокирующий реиндекс

Jira недоступна для использования. Индекс удаляется и полностью перестраивается. Если вы перезапустите Jira, а реиндекс еще не закончился, то Jira будет в нерабочем состоянии после рестарта. Нужно будет запустить реиндекс снова.

 

В общем-то все про индексы. Если есть, что добавить, то пишите в комментах :) 

1 comment

Доброго дня Вам, @Alexey Matveev -cPrime-, Спасибо за очень интересный и понятный даже для умственно отсталых пост.

У мну собстна 2 тупых вопроса:

1. Когда мы запускаем реиндекс (фоновый) - как апдейтятся индексы на ФС? То есть данные считываются из БД, каким-то там макаром сравниваются и пишутся на ФС? Если да, то на сколько нагружается БД?

Следующий вопрос корыстный:

2. Например, у нас есть 5 проектов, и разлетевшиеся в щепки индексы. (Случайно господин Эрэм Эрэфович заглянул в комнату с индексами). По-факту, чтобы собрать сей конструктор, нужно провести блокирующий реиндес. Но! У божественного господина Скрипт Ранеровича Адаптовиста есть функционал реидекса по JQL. Если прогнать данные реиндесы Скрипт Раненовичем по каждому проекту - можно ли будет избежать блокирующего реиндекса?

Заранее спасибо за ответ! 

Привет!

1. Да, данные считываются из БД и укладываются в индекс. Процесс похож на то, как будто ишью была просто изменена (updated). При этом если были данные в индексе по удаленной ишью, то они так и останутся в индексе, если мы делаем фоновый реиндекс.

Фоновый реиндекс идет в 1 поток и не должен давать существенной нагрузки на БД и сервера приложений. Но все зависит от текущей нагрузки на Jira со стороны плагинов и пользователей.

2. Если в индексе есть данные по удаленным ишью, то фоновый реиндекс не поможет. Если нет данных по удаленным ишью, то по идее все будет норм.

Спасибо. Муть в глазах по отношению к реиндексу слегка рассеялась :-)

Можно же просто сделать реиндекс 5 проектов штатными средствами, а не всего инстанса

@Sergey Papurin добрый день!

Да, всё верно! Помимо SR есть штатные средства. Запамятовал что-то про них.

Вопрос больше был - будут ли после таких махинаций "адекватные" данные :)

Вставлю свои 5 копеек

Основная боль индексов - Data Center

И не согласен, что реиндекс на больших инстансах - плохая практика

Хорошо, что в 7.12 сменили тип раскатки индексов, а ранее асинхронную индексацию

На DC, Atlassian рекомендуют делать блокирующиий реиндекс

https://confluence.atlassian.com/enterprise/jira-data-center-search-indexing-939499986.html

@Sergey Papurin Зачем делать реиндекс, если индексы не расходятся? А если индексы расходятся, то нужно искать почему они расходятся, а не просто их обновлять. Индексы в здоровых Jira не расходятся.

Именно, что на здоровых

Плюс в DC, остальные ноды будут доступны при реиндексе одной

Интеграции в виде присосок через rest api и плагины, которые используют в не штатном режиме

Практика плохая, но без неё пока никак

Я извиняюсь, но я не понимаю, зачем делать реиндекс еженочно/еженедельно, если индексы не расходятся.

Мне кажется, что у нас тоже большой инстанс и data center. У нас расходились индексы ,но это было связано с багом в Jira. И мы делали переиндексации только если индексы расходились. Потом обновили Jira и индексы расходиться перестали. Если когда-то разойдутся, то тогда будем переиндексировать и искать причину. 

Если расходятся индексы, то бороться нужно с причиной, а не с симптомом.

Like Gonchik Tsymzhitov likes this

Абсолютно, согласен :)

Comment

Log in or Sign up to comment