Gymterview
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-профилирования.