본문 바로가기

리디 접속이 원활하지 않습니다.
강제 새로 고침(Ctrl + F5)이나 브라우저 캐시 삭제를 진행해주세요.
계속해서 문제가 발생한다면 리디 접속 테스트를 통해 원인을 파악하고 대응 방법을 안내드리겠습니다.
테스트 페이지로 이동하기

자바 트러블슈팅 상세페이지

컴퓨터/IT 개발/프로그래밍

자바 트러블슈팅

scouter를 활용한 시스템 장애 진단 및 해결 노하우
소장전자책 정가9,800
판매가9,800
자바 트러블슈팅 표지 이미지

자바 트러블슈팅작품 소개

<자바 트러블슈팅> 건강한 서비스를 위한 scouter 활용법은 물론,
그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다!

기술이 아무리 발전하고 뛰어난 개발자가 있더라도 사람이 만든 프로그램은 언제든 장애가 발생할 수 있다. 그럼에도 상당수의 개발자나 시스템 운영자는 트러블슈팅에 대해 교육받을 기회가 많지 않다. 그래서 빠르게 장애를 파악하고 분석하여 장애 상황을 피하고 재발을 방지하는 데 작은 도움이 되고자 이 책을 준비하였다.


출판사 서평

건강한 서비스를 위한 scouter 활용법은 물론,
그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다!

기술이 아무리 발전하고 뛰어난 개발자가 있더라도 사람이 만든 프로그램은 언제든 장애가 발생할 수 있습니다. 그럼에도 상당수의 개발자나 시스템 운영자는 트러블슈팅에 대해 교육받을 기회가 많지 않습니다. 그래서 빠르게 장애를 파악하고 분석하여 장애 상황을 피하고 재발을 방지하는 데 작은 도움이 되고자 이 책을 준비하였습니다.

이 책은 『자바 개발자와 시스템 운영자를 위한 트러블 슈팅 이야기』의 개정판입니다. 전판에서 다룬 것처럼 자바 기반의 시스템에 문제가 발생했을 때 문제의 원인을 빠르게 찾고 해결하는 데 집중하는 한편, 국내에서 개발된 scouter라는 오픈소스 APM을 활용해 장애를 진단하는 방법을 자세히 다룹니다. 특히, 다양한 사례 연구와 그 밖의 다양한 도구의 사용법을 20년 경력에서 얻은 저자만의 노하우를 담아 설명합니다.

이 책의 주요 내용

● 자바 기반 시스템에서 어떤 문제가 발생할 수 있는지 살펴본다.
● 장애 진단 요청에는 어떻게 대처하는지 알아본다.
● 각종 애플리케이션 성능 모니터링(APM) 도구를 소개한다.
● JVM 기반의 APM으로 유명한 scouter의 설치, 설정, 사용법을 자세히 설명한다.
● JVM 애플리케이션의 주요 장애 원인인 스레드와 메모리 정보로 장애를 분석한다.
● 리눅스, CPU, 프로세스, I/O, 네트워크 모니터링으로 장애를 분석한다.
● 이외에도 Arthas, 치명 에러 로그 분석, 자바 인스트럭션까지 살펴본다.



저자 소개

저 : 이상민
삼성SDS에서 개발을 시작하여 NAVER, NHN 등의 회사에서 일했다. 『자바의 신』, 『자바 성능 튜닝 이야기』 등 다수의 IT 서적을 집필하였다. 지금은 국내 최고의 스마트 통합 주차 회사인 파킹 클라우드에서 개발 총괄 이사로 일하고 있다.

목차

PART I 자바에서 발생 가능한 문제들

CHAPTER 1 자바 기반의 시스템에서 발생할 수 있는 문제들 3
어떤 문제가 발생할 수 있을까? 4
시스템이 느려요 4
시스템 응답이 없어요 6
예외가 계속 발생해요 7
시스템이 죽어요 8
장애 상황을 종합해서 다시 살펴보자 9
발생 가능한 병목 지점들 10
정리하며 12

PART II scouter 살펴보기

CHAPTER 2 scouter 개요 및 설치 15
APM 15
다이나트레이스(dynatrace) 16
앱다이나믹스(AppDynamics) 17
뉴 레릭(New Relic) 17
인스타나(instana) 17
와탭(whatap) 17
인터맥스(interMax) 18
핀포인트(pinpoint) 19
scouter 20
scouter 구성 및 방화벽 설정 21
scouter 데모 프로그램 설치하기 23
정리하며 27

CHAPTER 3 scouter 설정하기 - 서버 및 에이전트 28
scouter 다운로드하기 28
scouter 서버 설정하기 29
한 대의 서버에서 여러 개의 수집 서버 실행하기 33
scouter 호스트 에이전트 설정하기 35
scouter 자바 에이전트 설정하기 - 기초 36
자바의 ClassFileTransformer 38
scouter 자바 에이전트 설정하기 - 데몬 모니터링하기 39
정리하며 44

CHAPTER 4 scouter 클라이언트에서 제공하는 기능들 45
scouter 클라이언트의 종류 45
scouter 클라이언트 시작하기 46
Objects 창 살펴보기 46
수집 서버 추가/삭제하기 48
사용하지 않는 서버 제거하기 48
scouter의 메뉴 49
File 49
Management 50
Collector 51
Host 52
Object 53
Window 54
그래프 추가하기 55
필수 그래프 목록 57
Tomcat/Java 필수 그래프 목록 58
서버 필수 그래프 목록 58
그래프 확인법 59
화면 전환하기 60
서버 묶어서 보기 63
정리하며 67

CHAPTER 5 scouter XLog 68
XLog 사용법 - 기초 68
XLog 목록 71
XLog 사용법 - 프로파일링 75
메서드 프로파일링 추가하기 78
XLog 사용법 - 필터링 81
XLog 사용법 - 과거 데이터 불러오기 86
정리하며 88

CHAPTER 6 scouter 서버/에이전트 플러그인 89
서버 플러그인의 종류 89
빌트인 플러그인 90
스크립팅 플러그인 91
에이전트 플러그인의 종류 91
httpservice 플러그인 92
capture 플러그인 94
정리하며 97


CHAPTER 7 scouter 사용 시 유용한 팁 98
수집 서버의 디스크 사용량 안전하게 관리하기 98
알림 설정은 필수다 99
샘플링도 필수다 101
메서드 프로파일링도 필수다 103
정리하며 104

PART III 스레드 진단하기

CHAPTER 8 스레드 때문에(스레드에서) 발생하는 문제들 107
WAS의 적절한 스레드 개수는 몇 개일까? 107
스레드에서 발생하는 문제 중 가장 대표적인 것은? 108
레이스 컨디션 109데드록 109
스타베이션 110
라이브 록 110
다른 형태의 예측 불가능한 오류 111
데드록 예제 111
록 경합을 피하는 10 + 1가지 방법 113
끝나지 않는 루프 116
스레드 개수 문제에 대한 권장안 116
정리하며 118

CHAPTER 9 스레드 단면 잘라 놓기 119
스레드 단면은 언제 자를까? 119
스레드 단면이 뭐길래 120
스레드 단면 해부하기 125
가장 간편한 Ctrl+Break와 Kill -Quit 131
jstack을 사용하는 방법도 있다 134
스레드 단면 파일로 남기기 135
정리하며 136

chapter 10 잘라 놓은 스레드 단면 분석하기 137

ThreadLogic 준비하기 137
ThreadLogic 사용하기 - 스레드 목록 확인 139
ThreadLogic 사용하기 - 잠겨 있는 스레드 확인 142
ThreadLogic 사용하기 - 무한 루프나 응답 없는 화면 확인 145
scouter를 사용한다면 스레드 목록 화면을 활용하자 148
scouter를 사용한다면 Stack Frequency Analyzer도 활용하자 150
정리하며 153

CHAPTER 11 스레드 문제 Case Study 154
스레드 단면으로 어떤 문제를 확인할 수 있을까? 154
시스템이 느릴 때도 스레드와 관련이 있을까? 156
시스템 응답이 없을 때에는 스레드 단면이 가장 효과적이다 157
예외가 지속해서 발생할 때도 스레드 단면이 도움이 될까? 159
사례 하나. CPU 사용량이 갑자기 올라가서 안 내려와요 160
상황 160
접근 방법 161
사례 둘. 스레드 풀의 스레드 개수가 계속 증가해요 162
상황 163
접근 방법 163
사례 셋. 시스템 응답이 없어요 165
상황 165
접근 방법 165
정리하며 167

PART IV 메모리 진단하기

CHAPTER 12 메모리 때문에 발생할 수 있는 문제들 171
자바의 메모리 영역 171
pc(program counter) 레지스터 172
JVM 스택 172
힙 172
메서드 영역 172
런타임 상수 풀 173
네이티브 메서드 스택 173
OutOfMemoryError는 언제 발생할까? 175
OutOfMemoryError 메시지의 의미 176
메모리 릭의 세 종류 178
수평적 메모리 릭 179
수직적 메모리 릭 179
대각선 형태의 메모리 릭 179
OutOfMemoryError 이외의 메모리 문제는 없을까? 180
정리하며 181

CHAPTER 13 메모리 단면 잘라 놓기 183
메모리 단면은 언제 자르나? 183
jmap으로 메모리 단면 생성하기 186
jmap의 -dump 옵션 사용하기 190
자동으로 힙 덤프 생성시키기 193
정리하며 195

CHAPTER 14 잘라 놓은 메모리 단면 분석하기 196
메모리 단면을 분석하는 도구들 196
MAT 준비하기 197
간단한 프로그램의 메모리 릭 찾기 198
MAT의 또 다른 기능들 201
Details 204
Biggest Objects by Retained Size 204
Actions 204
Reports 206
Step by Step 206
객체 상세 정보 메뉴 207
개발 PC의 메모리가 부족할 때 힙 덤프 분석하는 방법 210
scouter를 사용하여 메모리 문제 진단하기 211
GC 관련 211
힙 관련 211
정리하며 212

CHAPTER 15 메모리 문제 Case Study 213
메모리 단면으로 어떤 문제를 확인할 수 있을까? 213
시스템이 느리다고 항상 메모리 단면을 사용하는 것은 아니다 214
애플리케이션이 응답하지 않을 때도 메모리가 원인일 수 있다 215
사례 하나. 자꾸만 시스템이 OOME를 발생시켜요 216
상황 216
접근 방법 216
사례 둘. 시스템 응답이 없어요 218
상황 218
접근 방법 219
정리하며 221

PART V 자바 분석 도구

CHAPTER 16 자바 종합 분석 도구인 Arthas 225
Arthas란? 225
아서스 사용하기 226
아서스 주요 명령어들 228
dashboard 229
thread 230
jvm 232
sc/sm 234
monitor 235
stack/trace 236
tt 237
정리하며 239

PART VI 리눅스 진단하기

CHAPTER 17 리눅스 성능 진단 도구의 구성 243
리눅스 진단 명령어를 알아야 하는 이유 243
진단 도구 한눈에 살펴보기 244
60,000밀리초에 리눅스 시스템 분석하기 245
uptime 246
dmesg | tail 247
vmstat 1 247
mpstat -P ALL 1 248
pidstat 1 248
iostat -xz 1 248
free -m 249
sar -n DEV 1 250
sar -n TCP, ETCP 1 250
top 251
정리하며 251

CHAPTER 18 CPU 모니터링하기 252
시스템의 CPU 사용량을 한 줄로 모니터링하는 도구들 252
추가적인 시스템 모니터링 도구 설치하기 253
mpstat의 기본적인 사용 방법 255
mpstat의 옵션들 257
왜 CPU를 모니터링해야 하는 걸까? 262
정리하며 263

CHAPTER 19 전반적인 상황 모니터링하기 - vmstat와 sar 264
대부분의 유닉스와 리눅스에 설치되어 있는 vmstat 264
vmstat의 기본적인 사용법 265
vmstat의 옵션들 266
vmstat 옵션에 따른 출력 예 267
vmstat보다 상세한 정보를 알 수 있는 sar 273
sar의 기본적인 사용 방법 275
sar 명령어 옵션들 276
정리하며 278

CHAPTER 20 프로세스 상황 모니터링하기 279
프로세스 모니터링하기 279
프로세스 사이의 관계 알아보기 280
누구나 알고 있는 ps 283
프로세스별로 CPU 사용량 모니터링하기 286
프로세스의 메모리 상황을 확인하는 pmap 288
정리하며 291

CHAPTER 21 I/O 상황 모니터링하기 292
I/O를 모니터링하는 도구에는 어떤 것이 있을까? 292
디스크의 사용량을 알아보자 293
iostat를 알아보자 298
프로세스가 사용 중인 파일은 어떻게 확인할까? 302
정리하며 306

CHAPTER 22 네트워크 상황 모니터링하기 307
네트워크 상황을 모니터링하는 도구에는 어떤 것이 있을까? 307
네트워크를 사용하는 환경이 먼저 준비되어야 한다 308
sar로 네트워크 사용량 확인하기 311
lsof로 연결된 네트워크 정보 확인하기 317
사라질 네트워크 명령어들 320
정리하며 321

CHAPTER 23 실시간으로 시스템 모니터링하기 322
대부분의 리눅스에 설치되어 있는 top 322
top의 단축키들 325
top의 시작 옵션들 329
보다 예쁘고 간편한 htop 331
정리하며 334

CHAPTER 24 scouter로 리소스 모니터링하기 335
scouter 호스트 에이전트 확인 335
scouter에서 제공하는 리소스 모니터링 종류 336
실시간 프로세스 목록 확인하기 337
소켓 정보 확인하기 338
정리하며 339

PART VII 장애 진단 종합

CHAPTER 25 장애 진단은 이렇게 한다 343
진단 요청을 받았을 때(장애가 났을 때) 가장 먼저 할 일 343
본격적인 진단 시작하기 345
장애 원인 제거하고 결과 정리하기 348
scouter를 사용한 장애 감지와 원인 파악 353
상어 패턴 354
파도 패턴 354
ㅡ ㅡ 패턴 355
운석 낙하 패턴 356
산불 패턴 357
크리스마스트리 패턴 357
정리하며 358

APPENDIX 부록
APPENDIX A Fatal error log 분석 361
치명 에러 로그 파일 362
헤더 섹션 362
스레드 정보 섹션 367
프로세스 정보 섹션 372
시스템 정보 섹션 378
치명 에러가 발생하면 뭐부터 봐야 할까? 379

APPENDIX B 자바 인스트럭션 381
JVM 인스트럭션은 도대체 뭘까? 381

찾아보기 387


리뷰

구매자 별점

0.0

점수비율
  • 5
  • 4
  • 3
  • 2
  • 1

0명이 평가함

리뷰 작성 영역

이 책을 평가해주세요!

내가 남긴 별점 0.0

별로예요

그저 그래요

보통이에요

좋아요

최고예요

별점 취소

구매자 표시 기준은 무엇인가요?

'구매자' 표시는 리디에서 유료도서 결제 후 다운로드 하시거나 리디셀렉트 도서를 다운로드하신 경우에만 표시됩니다.

무료 도서 (프로모션 등으로 무료로 전환된 도서 포함)
'구매자'로 표시되지 않습니다.
시리즈 도서 내 무료 도서
'구매자’로 표시되지 않습니다. 하지만 같은 시리즈의 유료 도서를 결제한 뒤 리뷰를 수정하거나 재등록하면 '구매자'로 표시됩니다.
영구 삭제
도서를 영구 삭제해도 ‘구매자’ 표시는 남아있습니다.
결제 취소
‘구매자’ 표시가 자동으로 사라집니다.

이 책과 함께 구매한 책


이 책과 함께 둘러본 책



본문 끝 최상단으로 돌아가기

spinner
모바일 버전