Основа для перехвата метода для измерения эталона

Прежде чем я начну писать такую ​​платформу, я хотел бы знать, сталкивался ли кто-нибудь с такой платформой или разработал ее

Мы достигли точки в нашем проекте, где основное внимание уделяется повышению производительности. Я являюсь владельцем пружинного микросервиса RESTful, где есть контроллеры, делегирующие сервисам, которые используют пружинные репозитории. вполне стандартно, ничего особенного.

Вот что я хотел бы сделать. Я не хочу комментировать методы, которые я измеряю, и при этом я не хочу добавлять явные вызовы таймера в начале и конце методов, которые я хотел бы проверить. Код достаточно "грязный", как и с распечатками журналов.

То, что я хотел бы сделать, это перечислить методы, которые должны быть измерены во внешнем файле конфигурации, и с помощью пружины перехватить и измерить их. будут собраны контрольные показатели для различных методов в среде производства / оценки. Позже я хотел бы иметь пользовательский интерфейс, который будет визуализировать различные результаты каждого метода. в этом пользовательском интерфейсе я мог обнаружить аномалии, время, когда вызов занимал самое длинное или самое короткое время. Оттуда я могу углубиться в уровень сервисов, обнаруживая слабые места в моих сервисах, а оттуда - в плохо выполняющиеся запросы, вызываемые репозиториями.

В отсутствие назначенного инструмента (я отказываюсь верить, что нет по крайней мере сотни доступных), я планирую использовать Spring AOP или AspectJ для перехвата методов, которые я перечислил. В каждом перехвате я буду размещать распечатку журнала теста производительности. Позже я буду использовать Kibana, чтобы определить слабые места каждого метода, а затем углубиться в детали.

Мне все еще нужно изучить детали реализации того, как выполняется этот аспект, а также как именно настроить визуализацию данных с использованием кибаны ради этой цели.

Если кто-то может подсказать немного - предложить структуру, подходящую для моих нужд, или некоторый опыт или код, чтобы помочь в достижении моей цели, или, возможно, предложить альтернативный или другой способ сделать эти тесты, я хотел бы услышать об этом с большой благодарностью! спасибо голова!

3 ответа

На самом деле это не кодовое решение, но вы пытались использовать NewRelic ( http://newrelic.com/) в очень простой установке с очень низким отпечатком пальца из памяти и процессора, чтобы контролировать серверы приложений и дает вам очень хорошую панель для просмотра в.

Есть бесплатный и премиум (где бесплатно - очень хорошее предложение)

Настоятельно рекомендуется проверить это.

Nir

Это зависит от того, пытаетесь ли вы профилировать производственную среду или выделенную.

в случае выделенного env вы можете использовать профилировщики, такие как YourKit / JProfiler или JDK, встроенный в JVisualVM, который предоставляет базовые возможности. по моему опыту, JVIsualVM обычно был достаточно хорош.

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

И еще одна вещь, которую я хотел бы рассмотреть, - это BTrace - разрешающий динамическое инструментарий на JVM - я нашел его очень полезным для исследования проблем в рабочей среде (не только для профилирования)

Spring-Boot / Spring-Boot-Actuator имеет несколько встроенных измерений профилирования (сколько времени занимает обработка запроса). Он основан на структуре метрик.

Может быть, вам стоит взглянуть на это короткое видео из трубки: конечные точки Spring Boot-Actuator, о некоторых функциях Spring-Boot-Actuator (в Минуте 2:03 показан показатель, о котором я говорю). Если вам этого достаточно, вы, возможно, посмотрите на этот вопрос и ответ: Spring Boot Actuator без Spring Boot - они обсуждают, как использовать Actuator без Boot.

Другие вопросы по тегам