책소개
시스템에서 발생하는 문제의 원인을 진단하는
자바 트러블 슈팅 가이드
자바 시스템에서 문제가 발생했을 때 어떻게 원인을 찾는지, 진단하는 방법을 알려준다. 자바 시스템에서의 성능 관리보다는 문제를 진단하는데 초점을 맞추었으며 문제 진단에 사용하는 무료 툴과 사용법을 소개한다. 시스템 장애가 일어났을 때 문제 상황과 원인을 진단할 수 있는 리눅스 명령어를 다룬다.
목차
Story 01 자바 기반 시스템에서 발생할 수 있는 문제점들
나불안씨 소개
어떤 문제들이 발생하나
장애 상황을 종합해서 다시 보자
발생 가능한 병목 지점들
정리하며
Story 02 쓰레드에서 발생하는 문제점들에는…
WAS에서 적절한 쓰레드 개수는?
쓰레드로 인한 대표적인 문제들
락을 피할 수 있는 10가지 방법
끝나지 않는 루프
쓰레드 개수에 대한 권장안
정리하며
Story 03 쓰레드 단면 잘라 놓기
쓰레드 단면은 왜 만들까?
쓰레드 단면 해부하기
효과적인 쓰레드 단면 생성 방법
쓰레드 단면 파일로 남기기
정리하며
Story 04 잘라 놓은 쓰레드 단면 분석하기
TDA를 아시나요?
TDA 사용하기-쓰레드 목록 확인
TDA 사용하기-잠겨있는 쓰레드 확인
TDA 사용하기-무한 루프나 응답 없는 화면 확인
실시간 쓰레드 분석을 위한 ThreadChecker
정리하며
Story 05 쓰레드 문제 Case study
쓰레드 단면으로 확인할 수 있는 문제들
쓰레드 때문에 시스템이 느려질까?
응답이 없으면 쓰레드 단면부터 봐야
예외가 계속 생겨도 쓰레드 분석이 해결책?
사례 하나-CPU 사용량이 갑자기 올라갔어요
사례 둘-쓰레드 풀이 계속 늘어나고 있어요
사례 셋-시스템에 응답이 없어요
정리하며
Story 06 메모리 때문에 이런 문제들이 발생할 수 있다
자바 애플리케이션과 메모리 영역
OutofMemoryError는 언제 일어날까?
OutofMemoryError에 담긴 장애의 의미
메모리 릭의 3가지 유형
OutofMemoryError가 오류의 전부인가?
정리하며
Story 07 메모리 단면 잘라 놓기
메모리 단면은 언제 자르나?
hprof로 메모리 단면 생성하기
jmap으로 메모리 단면 생성하기
jmap의 dump 옵션 사용하기
힙 덤프를 자동으로 만들어보자
정리하며
Story 08 잘라 놓은 메모리 단면 분석하기
유용한 메모리 단면 분석 툴
MAT를 직접 사용해보자
정리하며
Story 09 메모리 문제 Case study
메모리 단면으로 확인할 수 있는 문제들
사례 하나-성능 테스트 중 시스템이 이상해졌어요
사례 둘-시스템에 응답이 없어요
정리하며
Story 10 모니터링 툴의 사용-Java VisualVM
Java VisualVM을 아시나요?
Java VisualVM을 해부해보자
JMX로 Java VisualVM 연결하기
Java VisualVM, 어떻게 활용하나?
정리하며
Story 11 실시간 JVM 모니터링이 가능한 BTrace
BTrace란?
BTrace 설치하기
BTrace API
클래스 어노테이션은 필수
유용한 메소드 어노테이션들
BTrace 활용, 주요 클래스부터 챙기자
BTrace를 바로 실행하고 싶다면?
예외가 계속 일어나는 원인을 추적해보자
정리하며
Story 12 CPU 모니터링하기
CPU 사용량을 모니터링하는 툴들
보다 정교한 모니터링이 필요하다면
기본적인 mpstat 사용법
mpstat가 제공하는 옵션들
CPU 모니터링의 정석
정리하며
Story 13 전반적인 상황 모니터링하기-vmstat와 sar
팔방미인 모니터링 툴 vmstat
기본적인 vmstat 사용법
vmstat가 제공하는 옵션들
vmstat 옵션 활용 사례
상세한 정보를 보여주는 sar
기본적인 sar 사용법
sar가 제공하는 옵션들
정리하며
Story 14 프로세스 상황 모니터링하기
프로세스 모니터링 툴 소개
프로세스간 관계 알아보기
누구나 알고 있는 ps 명령어
프로세스별 CPU 사용량 모니터링하기
프로세스 메모리 구성을 확인하는 pmap
정리하며
Story 15 I/O 상황 모니터링하기
I/O 모니터링 툴 소개
디스크 사용량을 알아보자
iostat 사용하기
프로세스가 어떤 파일을 쓰는지 확인하려면
정리하며
Story 16 네트워크 상황 모니터링하기
네트워크 모니터링 툴 소개
네트워크 사용 환경 만들기
sar로 네트워크 사용량 확인하기
lsof로 연결된 네트워크 정보 확인하기
netstat으로 네트워크 살펴보기
정리하며
Story 17 실시간으로 시스템 모니터링하기
쉽고 강력한 top 명령어
top를 위한 단축 키들
top이 제공하는 시작 옵션들
top보다 간편한 htop
정리하며
Story 18 리소스 모니터링은 이거 하나면 된다
통합 모니터링 툴 소개
collectl 설치하기
collectl 사용하기
collectl로 수집한 데이터 전송 방법
collectd 설치하기
collectd에 적응하기
collectd로 여러 서버 정보 취합하기
정리하며
Story 19 장애 진단은 이렇게 한다
장애가 나면 이것부터 챙기자
본격적인 진단 시작하기
장애 원인 제거하고 결과 정리하기
정리하며
Story 20 문제점에 따른 진단은 이렇게 한다
시스템이 느리면 이렇게
응답이 없을 때는 이렇게
정리하며
부록 A 그 외에 유용한 명령어들
부록 B 쓰레드 단면 추가 옵션 출력 결과 예
부록 C 자바 컀스트럭션(instruction)
부록 D Fatal Error Log 분석
부록 E sar 옵션별 결과 예
부록 F VirtualBox에 우분투(Ubuntu) 설치하기
부록 G lsof 용어 설명
부록 H top 단축 키