Декомпиляция Методов Java На Производительном Приложении Под Нагрузкой – Миф Или Реальность?

Тестирование, несомненно, является одним из столпов разработки приложений.

Как и любой типичный кит, тестирование может разразиться ошибками и не прекращаться долгое время.

Но главный вопрос заключается в достаточности тестового покрытия — удастся ли отловить все ошибки в написанных тест-кейсах? Возможно, некоторые появятся только под пользовательской нагрузкой.

Для их выявления, как правило, детонируется запрос пользователя и далее активируется следующая цепная реакция: в руки попадает специалист службы поддержки, вторая линия поддержки и, если повезет, сообщение о нештатной работе.

разработчика.

Да, инцидент также может исходить от системы мониторинга APM (если она у вас, конечно, есть).

Но все эти вещи не позволят нам однозначно определить, какие значения принимали переменные до возникновения исключения.

В этом посте мы поговорим о решении, призванном помочь в таких ситуациях.



Декомпиляция методов Java на производительном приложении под нагрузкой – миф или реальность?

Устраивайтесь поудобнее.

Давайте поговорим о OverOps — решение для обнаружения ошибок в приложениях на Java, Scala, Clojure и Groovy. Покажу вам несколько скриншотов и расскажу об основных возможностях продукта.

Неслучайно во вступительной части говорилось о тестировании.

Ошибки.

проблемы, возникающие в производственной среде, не обязательно возникнут в среде разработки и тестирования.

А нагрузка реальной пользовательской активности может выбрасывать невиданные доселе исключения.



Декомпиляция методов Java на производительном приложении под нагрузкой – миф или реальность?

Суть OverOps заключается в следующем: 1) при запуске JVM рядом с ней запускается агент OverOps; 2) агент способен отслеживать возникновение исключений в коде (как обрабатываемых, так и необработанных); 3) при возникновении исключения агент удаляет дамп кучи и применяет его к декомпилированному байт-коду.

В результате вы сможете увидеть, какие значения принимали переменные до возникновения исключения.

Когда агент работает, поставщик заявляет, что его максимальные накладные расходы составляют 3%.

На нашем лабораторном стенде с легкой нагрузкой нам не удалось сильно приблизиться к этому показателю, поэтому пока поверим на слово.

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

Оказывается, у OverOps есть целый набор монстров , отдельные представители которых материализуются при возникновении соответствующих ошибок.

Забавно, правда?

Декомпиляция методов Java на производительном приложении под нагрузкой – миф или реальность?

В самом интерфейсе это выглядит примерно так:

Декомпиляция методов Java на производительном приложении под нагрузкой – миф или реальность?

Система периодически собирает снимки (т.е.

мы не увидим все ошибки, но увидим их количество).

Можно создать правила, например, «10 ошибок такого типа»: «сообщить здесь» («сообщить об ошибке в Jira», «опубликовать в Slack», «опубликовать в Twitter» и т. д.).

Полный список интеграций можно найти по адресу связь .

Вот пример моей тестовой интеграции с NewRelic. Подробности отображаются на вкладке Плагины и сопровождаются прямой ссылкой в OverOps, что, честно говоря, очень удобно:

Декомпиляция методов Java на производительном приложении под нагрузкой – миф или реальность?

OverOps может фильтровать сторонние библиотеки, чтобы исключить их из мониторинга.

В самом интерфейсе это выглядит примерно так:

Декомпиляция методов Java на производительном приложении под нагрузкой – миф или реальность?

Еще один функционал: прикрепление исходного кода извне, фильтрация ошибок, если они содержат персональные данные (настраивается через регулярные выражения).

Из небольших недостатков: они не умеют показывать тип объекта, если он унаследован от базового типа, а сигнатура метода принимает базовый тип.

Все возможные сценарии предусмотрены типом установки решения: SaaS, Hybrid, On-Premise. Сейчас, конечно, уже поздно говорить о том, что OverOps был бы очень полезен в высокий сезон — ведь именно в периоды повышенной нагрузки велики шансы отловить различные ошибки, не проявившие себя в другое время.

Но к предстоящим праздникам и соответствующему пику трафика все же стоит задуматься о тщательном мониторинге вашей розничной системы.

Пожалуйста, задавайте вопросы в комментариях.

А если задача требует чуть более вдумчивого подхода, наш консалтинг - как свет в окне в метель и метель , – всегда появляется в нужный момент. Автор статьи: Антон Касимов , архитектор систем управления, «Инфосистемы Джет».

Теги: #java #разработка приложений #тестирование ИТ-систем #мониторинг #разработка для электронной коммерции #тестирование с использованием #scala #clojure #Groovy #инфосистемы Jet #инфосистемы Jet #инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet # Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет #Инфосистемы Джет jet #инфосистемыjet #инфосистемыjet #инфосистемыjet #инфосистемыjet #инфосистемыjet #инфосистемыjet

Вместе с данным постом часто просматривают: