Бывают ситуации смешные, бывают курьезные, а бывает IT магия. Я ее не сторонник, а скорее даже наоборот - ярый противник. Но обо все по порядку...
Есть у нас bug- issue-tracking система компании Atlassian - Jira. Используем не самую последнюю версию, но все стабильно и от добра добра не ищут. А с недавнего времени приключилась с ней беда окаянная. Некоторым пользователям и по некоторым issue перестали приходить уведомления на email'ы. Причем кому, что и когда перестанет приходить - неведомо. Например, моему коллеге уведомления приходят, а мне - нет. По issue X приходят, и по issue Y уже нет. При это никто вроде бы ничего ни в Jira, ни в почтовом сервере не менял. Но если уведомления перестают приходить, то спасает только перезапуск Jira. Самое курьезное в этой ситуации то, что в Jira есть встроенный механизм отправки тестового email'a. Тестовые email'ы приходят в таких ситуациях без вопросов. Проблема началась несколько месяцев назад, а на днях она встала в полный рост.
Решить ее удалось с помощью обсуждения подобных проблем службой поддержки Atlassian. Дело было, как Вы наверное уже догадались, в нехватке Jira оперативной памяти (т.н. java heap space). Не догадались? А при чем здесь почта? А кто "съел" всю память? И почему все остальное работало? Ой, это прямо детектив. В Jira есть встроенный механизм backup'a, который, "барабанная дробь", и требует все больше и больше памяти (размер базы данных растет, написан backup, по видимому, "коряво" вот и ведет себя так; во всяком случае у нас "козлом отпущения" был назначен именно он). В общем, после того как Jira нахватает оперативки (ну мы то с вами понимаем, что речь идет именно о java heap space) она и перестает отправлять некоторые email'ы. При этом все остальное работает. По крайней мере видимых проблем в Jira мы не заметили 2 дня проработав с продуктивной Jir'ой после очередного OOM'a (переполнения памяти).
Лечить проблему тривиально - выделить Java/Jira больше памяти (параметр -Xmx, а вот куда его прописать зависит от вашей операционки и того как Jira запускается - ну чистая магия :). Да, если физически памяти на сервере попросту не хватает, то придется ее таки физически увеличить (кэп?) - доставить там пару планок оперативки или перенести Jira на другой более "памятный" сервер.
Какие из всей этой истории можно сделать выводы:
- Некоторые части в Jira или сторонних используемых библиотек (были?) написаны крайне коряво.
Ходят упорные слухи, что вся Jira написано коряво и Redmine "наше все". - Предположительно, в старых версиях Jira наблюдается зависимость объема оперативной памяти от количества issue в базе. Atlassian "хвасталась", что начиная с версии 5.2 они теперь "enterprise scale" чтобы это ни значило :). Кто не в курсе, до этой версии были чисто физические ограничения на количество issue/проектов. Некто bobuk из Яндекса в подкасте Радио-Т упоминал, что по сути их версия Jira написана почти под Яндекс - отдельная сборка, специальная поставка Atlassian и т.д.
Комментариев нет:
Отправить комментарий