Устранение неполадок Java в среде производства

В производственной среде, мы не можем пройти точку останова отладки, новый журнал, средства визуализации, чтобы сразу же просмотреть текущее рабочее состояние и получить сообщение об ошибке, на этот раз, с Java поставляется с инструментами командной строки, а также связанные с ними инструменты анализа дампа, а также некоторыми небольшие советы, которые могут значительно повысить эффективность нашего исследования проблемы

Рабочие параметры

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

Аргументы Просмотр виртуальной машины Java

jps -l Посмотреть все программы Java, работающих одновременно отображать начинают имя класса класса, добраться до PID

1 4706 org.apache.catalina.startup.Bootstrap
 2 5023 sun.tools.jps.Jps
 

jinfo -flags PID Просмотр параметров времени выполнения виртуальной машины Java и параметры процесса

1 Установка для обработки ID 28987 , пожалуйста , подождите ...
 2  Debugger прилагается успешно.
3  обнаружен компилятор сервера.
4 JVM версии 25.171- b11
 5 Non- по умолчанию VM флаги: -XX: CICompilerCount = 3 -XX: InitialHeapSize = 132120576 -XX: MaxHeapSize = 2092957696 -XX: MaxNewSize = 697303040 -XX: MinHeapDeltaBytes = 524288 -XX: NewSize = 44040192 -XX: OldSize = 88080384 -XX: + UseCompressedClassPointers -XX: + UseCompressedOops -XX: + UseParallelGC
 6 Командная строка: -Dspring.config.location = application.properties -Dspring.profiles.active = постановка

java -XX:+PrintFlagsFinal -version Просмотр текущих параметров виртуальной машины Java виртуальной машины по умолчанию

Просмотр в режиме реального времени GC статус

jstat -gc PID 1000 10 Просмотр дс информации в секунду, в общей сложности 10 раз

Разъяснение больше выходных параметров, причем каждое опорное поле https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

1  S0C S1C S0U S1U ЕС Инк OC МУ или МС КТС CCSU YGC GCT YGCT ФСК GCTF   
 2 512,0 512,0 15,3 0,0 4416,0 1055,2 11372,0 7572,5 14720,0 14322,5 1664,0 1522,8 40 0,137 8 0,039 0,176

Может столкнуться во время быстрой sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 24.181-b01. Target VM is 25.171-b11задачи , поскольку установлены несколько версий, использование which, ls -lможет быть расположены в одной и тот же профиль исполняемого в данный момент Java программа Java версию

расследование ошибок

Проблемы с памятью

Утечки памяти вызывают OOM? Необычно высокое потребление памяти? Это производственная среда настолько часто проблема, Java предоставляет файл дамп для нас того, что произошел в записанной памяти, необходимо использовать некоторые инструменты, из которых можно получить ценную информацию.

Экспорт файла дампа

  1. Заранее программы Java плюс этих параметров печататься файл дампа-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./
  2. Для запуска программы с использованием jmap :jmap -dump:format=b,file=heap.hprof PID

Анализ дампа файла

Если файл дампа не слишком велик, он может распространиться на http://heaphero.io/index.jsp анализировать

Файлы большие, и вы хотите провести более систематический анализ, рекомендуемый MAT анализ, существует несколько общих Просмотр

  1. Home] в [Leak Подозреваемых может выяснить, где проблема
  2. Нажмите [Создать гистограмму из произвольного набора объектов, найденных в числе всех объектов]
  3. Щелкните правой кнопкой мыши на объекте [Merge Кратчайшие к GC Roots] -> [исключить все / слабые / мягкие ссылки и т.д. фантомные] может запросить объект с большим количеством ссылок, которые GC ROOT

Проблемы многопоточности

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

Файл jstack Экспорт

Используйте , jstack PID > 文件если это не удается , пожалуйста , добавьте -Fпараметры, если это не удается, используйте пользователь использовать программу Java начинает выполнение jstack, следующая часть выходного формата jstack

1        线程名ПИД的16进制
 2 "HTTP-NiO-8080-акцептор-0" # 17 демон PRIO = 5 os_prio = 0 TID = 0x00007fac2c4bd000 NID = 0x29f4 работоспособной [0x00007fac192f6000 ]
 3     java.lang.Thread.State: Runnable ( кот的工作线程正在运行,有NEW / Runnable / BLOCKED / ОЖИДАНИЕ / TIMED_WATING / TERMINATED状态)
 4      в sun.nio.ch.ServerSocketChannelImpl.accept0 (нативный метод)
 5      в sun.nio.ch.ServerSocketChannelImpl.accept (ServerSocketChannelImpl. Java: 422 )
 6      в sun.nio.ch.ServerSocketChannelImpl.accept (ServerSocketChannelImpl.java:250 )
 7      - заблокирован <0x00000000faf845a8> (а java.lang.Object)
8      в org.apache.tomcat.util.net.NioEndpoint $ Acceptor.run (NioEndpoint.java:682 )
 9      в java.lang.Thread.run (Thread.java:748)

 

выход jstack может видеть все потоки и их состояние, мы можем увидеть , какие потоки работают наши собственные создали, то, вероятно , что нити были выполнены, на этот раз название нити это особенно важно, рекомендуется указать значимое имя нити при создании нового потока. Конечно, смотрите через PID также очень удобно.

действия по устранению неполадок

  1. top Просмотр Java программа, которая при высокой нагрузке
  2. top -p PID -H Просмотр состояния всех процессов процесс, работающих под управлением
  3. При высокой нагрузке записи ID потока, printf "&x" PIDпреобразуется в шестнадцатеричное
  4. jstack PID > 文件
  5. Переоборудовано в потоке поток ID запроса работает стек после шестнадцатеричного файла с jstack
  6. От того, где стек нити узнала в реализации каких задач, в сочетании с кодом делового суждения

воспроизведенный

https://www.wangtianyi.top/blog/2018/07/20/javasheng-chan-huan-jing-xia-wen-ti-pai-cha/?utm_source=github&utm_medium=github

рекомендация

отwww.cnblogs.com/chongaizhen/p/11114802.html
рекомендация