본문 바로가기

도서 소개

자바 트러블슈팅: scouter를 활용한 시스템 장애 진단 및 해결 노하우

 

 

종이책은 현재 절판입니다. 그리고 전자책은 24년 3월 15일부터 계속 판매하고 있습니다. 

 

202182일부터 <정가인하> 도서입니다.

 

도서 구매 사이트(가나다순)

[교보문고] [도서11번가] [반디앤루니스] [알라딘] [영풍문고] [예스이십사] [인터파크] [쿠팡]

 

전자책 구매 사이트(가나다순)

[교보문고]  [구글북스]  [리디북스]  [알라딘]  [예스이십사]

 

《자바 개발자와 시스템 운영자를 위한 트러블 슈팅 이야기》의 전면개정판!

 

건강한 서비스를 위한 scouter 활용법은 물론,

그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다!

 

출판사 제이펍

저자명 이상민

출판일 2019년 12월 27일

페이지 408쪽

판 형 170*225*19.8

제 본 무선(soft cover)

정 가 28,000원 ==> 14,000원

ISBN 979-11-88621-82-8

키워드 자바 / scouter / 트러블슈팅 / 시스템 장애 / APM / 장애 진단 / 리눅스

분 야 프로그래밍 / 자바

 

관련 사이트

scouter GitHub

 

관련 포스트

2019/12/13 - [출간전 책소식] - 시스템 장애 극복을 위한, 자바 트러블슈팅!

 

관련 도서

스프링부트로 배우는 자바 웹 개발

자바 마스터 북: 기초부터 실무 응용까지

 

강의 보조자료 다운로드

교재로 채택하신 분들은 메일을 보내주시면 아래의 자료를 보내드리겠습니다. jeipubmarketer@gmail.com

■ 본문의 그림과 표

 

샘플 PDF

(차례, 머리말, 베타리더 후기, 1장 '자바 기반의 시스템에서 발생할 수 있는 문제들', 5장 'scouter XLog' 일부, 12장 '메모리 때문에 발생할 수 있는 문제들' 일부)

 
자바트러블슈팅_sample.pdf
다운로드

 

정오표 페이지

(등록되는 대로 링크를 걸어드리겠습니다.)

 

도서 구매 사이트(가나다순)

[교보문고] [도서11번가] [반디앤루니스] [알라딘] [영풍문고] [예스이십사] [인터파크] [쿠팡]

 

전자책 구매 사이트(가나다순)

[교보문고]  [구글북스]  [리디북스]  [알라딘]  [예스이십사]

 

도서 소개

《자바 개발자와 시스템 운영자를 위한 트러블 슈팅 이야기》의 전면개정판!

 

건강한 서비스를 위한 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

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

네이버 책

포스트

유튜브

인스타그램

트위터

페이스북