middle
Как отлаживать и профилировать плагины?
Отладка и профилирование — критически важные навыки при разработке плагинов Jira DC, поскольку плагин работает внутри JVM Jira, что создаёт специфические вызовы.
Remote Debug
Пример
# Запуск Jira с debug-портом
atlas-debug
# Jira стартует с: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
# В IDE: Run → Edit Configurations → Remote JVM Debug
# Host: localhost, Port: 5005
Логирование (SLF4J)
Пример
@Named
public class MyService {
private static final Logger log = LoggerFactory.getLogger(MyService.class);
public void process(String key) {
log.debug("Начало обработки: {}", key);
try {
// ... логика ...
log.info("Обработка завершена: {}", key);
} catch (Exception e) {
log.error("Ошибка обработки {}: {}", key, e.getMessage(), e);
}
}
}
Типичные проблемы и диагностика
| Проблема | Симптом | Диагностика |
|---|---|---|
| Memory leak | OOM после нескольких дней | Heap dump -> MAT -> Dominator tree |
| Thread leak | Увеличение числа потоков | Thread dump -> ищем потоки плагина |
| Slow query | Медленные страницы | SQL logging -> анализ запросов AO |
| ClassNotFoundException | Ошибка загрузки плагина | Проверить Import-Package в MANIFEST.MF |
| Plugin не стартует | Статус Disabled в UPM | Логи: atlassian-jira.log -> ошибки OSGi |
Частые ошибки
- Оставить уровень DEBUG в production — логи переполняют диск
- Использование System.out.println() вместо SLF4J — вывод теряется или идёт в неправильный файл
- Не делать heap dump при первом OOM — проблема воспроизводится с трудом
- Профилирование на dev-окружении с маленьким датасетом — не отражает production-нагрузку
Как используется в 2026
- JFR (Java Flight Recorder) — встроенный профайлер JVM, zero-overhead в production
- Atlassian DC Performance Toolkit интегрирует JMeter + JFR для end-to-end профилирования
- Observability: Prometheus + Grafana для мониторинга метрик плагинов в production
- Distributed tracing (OpenTelemetry) начинает применяться для DC-кластеров
На собеседовании: atlas-debug — основной инструмент повседневной разработки. Логи Jira:
<JIRA_HOME>/log/atlassian-jira.log. Thread dump — первый инструмент при зависании Jira, Heap dump — при OOM. Покажите знание JFR для production-профилирования.