[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-jira-kak-otlazhivat-i-profilirovat-plaginy":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},1063,"kak-otlazhivat-i-profilirovat-plaginy",27,"jira","Jira","📋","Как отлаживать и профилировать плагины?","Отладка и профилирование — критически важные навыки при разработке плагинов Jira DC, поскольку плагин работает внутри JVM Jira, что создаёт специфические вызовы.\n\n### Remote Debug\n\n```bash\n# Запуск Jira с debug-портом\natlas-debug\n# Jira стартует с: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005\n\n# В IDE: Run → Edit Configurations → Remote JVM Debug\n# Host: localhost, Port: 5005\n```\n\n### Логирование (SLF4J)\n\n```java\n@Named\npublic class MyService {\n    private static final Logger log = LoggerFactory.getLogger(MyService.class);\n\n    public void process(String key) {\n        log.debug(\"Начало обработки: {}\", key);\n        try {\n            \u002F\u002F ... логика ...\n            log.info(\"Обработка завершена: {}\", key);\n        } catch (Exception e) {\n            log.error(\"Ошибка обработки {}: {}\", key, e.getMessage(), e);\n        }\n    }\n}\n```\n\n### Типичные проблемы и диагностика\n\n| Проблема | Симптом | Диагностика |\n|---|---|---|\n| Memory leak | OOM после нескольких дней | Heap dump -> MAT -> Dominator tree |\n| Thread leak | Увеличение числа потоков | Thread dump -> ищем потоки плагина |\n| Slow query | Медленные страницы | SQL logging -> анализ запросов AO |\n| ClassNotFoundException | Ошибка загрузки плагина | Проверить Import-Package в MANIFEST.MF |\n| Plugin не стартует | Статус Disabled в UPM | Логи: atlassian-jira.log -> ошибки OSGi |\n\n### Частые ошибки\n\n- Оставить уровень DEBUG в production — логи переполняют диск\n- Использование System.out.println() вместо SLF4J — вывод теряется или идёт в неправильный файл\n- Не делать heap dump при первом OOM — проблема воспроизводится с трудом\n- Профилирование на dev-окружении с маленьким датасетом — не отражает production-нагрузку\n\n### Как используется в 2026\n\n- JFR (Java Flight Recorder) — встроенный профайлер JVM, zero-overhead в production\n- Atlassian DC Performance Toolkit интегрирует JMeter + JFR для end-to-end профилирования\n- Observability: Prometheus + Grafana для мониторинга метрик плагинов в production\n- Distributed tracing (OpenTelemetry) начинает применяться для DC-кластеров\n\n> **На собеседовании:** atlas-debug — основной инструмент повседневной разработки. Логи Jira: `\u003CJIRA_HOME>\u002Flog\u002Fatlassian-jira.log`. Thread dump — первый инструмент при зависании Jira, Heap dump — при OOM. Покажите знание JFR для production-профилирования.","","middle",[15,16,17,18,7],"performance","debugging","logging","jira-plugin",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":35,"featuredSnippetReady":36},"Как отлаживать и профилировать плагины Jira DC — Gymterview","Отладка Jira DC плагинов: atlas-debug (remote debug 5005), SLF4J логирование, thread dump, heap dump, JFR. Типичные проблемы и диагностика.","Отладка и профилирование плагинов Jira DC — Gymterview","Remote debug, SLF4J, thread\u002Fheap dump, JFR: как диагностировать memory leak, thread starvation, медленные запросы в Jira DC.",[27,28,29,30,31,32,33,34],"atlas-debug","remote debug","SLF4J","thread dump","heap dump","JFR","Jira плагин отладка","профилирование","atlas-debug запускает Jira с remote debug на порту 5005. Логирование через SLF4J (LoggerFactory.getLogger). Thread dump (jstack) — при зависании, Heap dump (jmap) — при OOM. JFR (Java Flight Recorder) — zero-overhead профилирование в production. Логи: \u003CJIRA_HOME>\u002Flog\u002Fatlassian-jira.log. Уровень логирования меняется через Administration → Logging.",true]