Arthas — инструмент для устранения неполадок в сети.

Java

вопрос

Компания взяла на себя вторичный проект Spring Cloud по разработке и обслуживанию, и exception.msg() был напечатан при выводе журнала исключений, но вывода не было.e.printStackTrace()Например, я бросилNullPointException, он выводитjava.lang.NullPointerException, эта строка сообщает об ошибке, но не выводит. Поскольку код находится в сети, в отличие от тестовой среды, код можно обновлять по желанию. В этот моментarthasна поле.

Источник Артаса

ArthasдаAlibabaОткрытый исходный кодJavaДиагностический инструмент, любимый разработчиками.Arthasявляется открытым исходным кодом в ИнтернетеJavaИнструмент диагностики, использующий интерактивный режим командной строки, поддерживаетwebТерминальная онлайн-диагностика, предоставляя при этом множествоTabФункция автозаполнения еще больше облегчает обнаружение и диагностику проблемы. выгода отArthasМощные и богатые функции, пустьArthasТо, что можно сделать, выходит за рамки воображения.

Какие проблемы могут решить Arthas

Из какого пакета jar загружается этот класс? Почему сообщается о различных исключениях, связанных с классом?

Почему код, который я изменил, не выполняется? Это потому, что я не совершал? Ветвь неправильная?

Если вы столкнулись с проблемой и не можете отладить ее онлайн, можете ли вы опубликовать ее повторно, только добавив журнал?

Есть проблема с обработкой данных пользователя онлайн, но ее нельзя отладить онлайн или воспроизвести офлайн!

Есть ли глобальный вид, чтобы увидеть работоспособность системы?

Есть ли способ отслеживать рабочее состояние JVM в реальном времени?

Как быстро найти горячие точки приложения и сгенерировать график пламени?

как установить артас

скачатьarthas-boot.jar, затем используйтеjava -jarСпособ начать:

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

общие команды артаса

dashboard

Панель данных в режиме реального времени текущей системы, нажмите Ctrl + C для выхода.

При работе на Ali-tomcat он будет отображать информацию о текущем коте в режиме реального времени, такую ​​как количество запросов HTTP qps, rt, количество ошибок, информацию о пуле потоков и так далее.

thread

Просмотр информации о текущем потоке, просмотр стека потока

Поддерживает отображение одним щелчком N самых загруженных в данный момент верхних потоков и стеков печати:

$ thread -n 3

thread -b, узнать, какой поток в данный момент блокирует другие потоки

$ thread -b

Обратите внимание, что в настоящее время поддерживается только поиск потока, заблокированного ключевым словом synchronized, если это java.util.concurrent.Lock, он еще не поддерживается.

watch

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

часы имеют больше параметров, в основном потому, что они могут наблюдать за объектами в 4-х разных сценах

имя параметра Параметр Описание
class-pattern совпадение выражения имени класса
method-pattern совпадение выражения имени метода
express смотреть выражение
condition-express условное выражение
[b] существуетперед вызовом методаНаблюдаемый
[e] существуетпосле исключения методаНаблюдаемый
[s] существуетПосле возврата методаНаблюдаемый
[f] существуетПосле окончания метода(нормальный возврат и аномальный возврат) наблюдение
[E] Включить сопоставление регулярных выражений, по умолчанию используется сопоставление с подстановочными знаками.
[x:] Указывает глубину обхода атрибута выходного результата, по умолчанию 1

Соблюдайте параметры метода и возвращаемые значения

$ $ watch com.slf.arthas.controller.DemoController login '{params,returnObj,throwExp}' -n 5 -x 3

Пример наблюдения аномальной информации

$ watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2

jad

Декомпилировать исходный код указанного загруженного класса

Команда jad декомпилирует байт-код класса, реально работающего в JVM, в java-код, что удобно вам для понимания бизнес-логики;

  • В Arthas Console декомпилированный исходный код имеет подсветку синтаксиса, что облегчает его чтение.
  • Конечно, в декомпилированном java-коде могут быть синтаксические ошибки, но это не влияет на ваше понимание прочитанного.
имя параметра Параметр Описание
class-pattern совпадение выражения имени класса
[c:] Хэш-код ClassLoader, которому принадлежит класс
[classLoaderClass:] Указывает имя класса ClassLoader, который выполняет выражение
[E] Включить сопоставление регулярных выражений, по умолчанию используется сопоставление с подстановочными знаками.

скомпилировать java.lang.String

 jad java.lang.String

Декомпилировать указанную функцию

jad demo.MathGame main

онлайн-учебник Артаса:art has.aliyun.com/doc/art has-…

Слева туториал, справа можно вводить команды

Научите вас шаг за шагом, попробуйте прямо сейчас.

возникшие проблемы

pid не найден, jps не установлен

image.png

Причина: Centos устанавливает open-jdk и не устанавливает команду jps

Решение: вам необходимо установить пакет java-1.X.X-openjdk-devel, который предоставляет инструмент jps.

Запрос

yum list | grep jdk-devel

image.png

Установить

yum install java-1.8.0-openjdk-devel.x86_64

image.png

instrument library is missing in target VM

GitHub.com/Alibaba/art…

image.png

Ссылаться на

официальный сайт Артаса