자바 트러블슈팅
2024년 03월 15일 출간
국내도서 : 2019년 12월 27일 출간
- eBook 상품 정보
- 파일 정보 pdf (30.65MB)
- ISBN 9791193926130
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 불가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)
쿠폰적용가 8,820원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다!
기술이 아무리 발전하고 뛰어난 개발자가 있더라도 사람이 만든 프로그램은 언제든 장애가 발생할 수 있습니다. 그럼에도 상당수의 개발자나 시스템 운영자는 트러블슈팅에 대해 교육받을 기회가 많지 않습니다. 그래서 빠르게 장애를 파악하고 분석하여 장애 상황을 피하고 재발을 방지하는 데 작은 도움이 되고자 이 책을 준비하였습니다.
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
에이전트 플러그인은 수집 서버가 아닌 scouter 에이전트에 지정해서 사용하는 플러그인을 말한다. 이 플러그인은 해당 시점에 메서드로 넘어온 매개변수의 값을 확인하거나 리턴되는 값을 확인할 때 유용하다. 예를 들어 어떤 특정 서버만 예외가 발생하는 경우 capture 플러그인을 사용하면 문제가 발생한 메서드의 매개변수나 리턴값을 확인할 수 있기 때문에 디버깅 용도로 아주 유용하게 활용할 수 있다. scouter에서 기본적으로 제공하는 에이전트 플러그인의 종류는 다음과 같다.
_91쪽
애플리케이션을 운영할 때 각종 프로그램의 응답 속도는 다르다. 그런데 대부분의 경우 진단을 하고 튜닝을 할 때 분석해야 하는 대상은 느린 애플리케이션이다. 0.1초 이하의 프로그램을 튜닝해야 하는 경우도 분명 존재하겠지만, 대부분의 응답 속도가 2~3초인 애플리케이션에서는 아주 빠른 1초 이하의 요청들은 분석할 일이 거의 없다. 게다가 이러한 요청들에 대한 프로파일링 정보를 저장할 경우 디스크를 많이 사용하므로 엄청난 낭비를 초래한다. 따라서, 이 경우에는 샘플링을 하여 디스크 사용량을 줄일 수 있다. scouter에서 샘플링을 사용하면 특정 비율만큼 프로파일링 정보들이 저장되고, TPS의 값은 문제없이 제공되며, XLog에 점이 전부 찍힌다. 샘플링은 자바 에이전트의 설정 파일에서 지정하면 된다.
_101쪽
그중에서 데드록이 발생했거나 록이 걸려 여러 스레드가 그 록이 풀리기만을 기다리고 있을 때, 문제를 찾는 가장 좋은 방법이 바로 스레드 단면(스레드 덤프(thread dump))이다. 물론, scouter를 사용하면 쉽게 찾을 수도 있지만, scouter의 도입을 고민하고 있거나, 사용 못 하는 환경이라면 스레드 단면을 만들어 확인하는 것이 가장 간단하다. 게다가 시스템의 CPU가 100%에 도달하면 대부분의 모니터링 도구가 무용지물이 되기 때문에, 스레드 단면을 만들고 이해하는 방법을 알아 두는 것은 매우 중요하다.
_119쪽
예외가 지속해서 발생할 때, 원인을 찾는 또 한 가지 방법은 scouter의 XLog에서 빨간 점들을 확인하는 것이다. 이 점들을 드래그하여 문제가 발생한 요청의 어느 부분에서 예외가 발생는지 확인하면 보다 빠르게 문제의 원인을 잡을 수 있을 것이다. 하지만 scouter의 메서드 프로파일링 옵션이 제대로 설정되지 않은 경우에는 정확한 위치를 찾기 어려우므로 예외 로그의 스택 트레이스(stack trace) 로그를 확인하는 것이 좋다.
_160쪽
상용 프로파일링 도구를 사용하면, 어떤 라인 혹은 어떤 메서드에서 얼마나 많은 임시 객체가 생성되었는지 분석할 수 있다. 하지만 프로파일링 도구를 사용하여 메모리 사용량을 분석할 경우에는 성능에 많은 영향을 주기 때문에, 운영 서버에서는 절대 확인하려고 해서는 안 되며 개발자의 PC나 개발 서버에서 문제점을 확인해야만 한다.
_185쪽
건강한 서비스를 위한 scouter 활용법은 물론,
그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다!
기술이 아무리 발전하고 뛰어난 개발자가 있더라도 사람이 만든 프로그램은 언제든 장애가 발생할 수 있습니다. 그럼에도 상당수의 개발자나 시스템 운영자는 트러블슈팅에 대해 교육받을 기회가 많지 않습니다. 그래서 빠르게 장애를 파악하고 분석하여 장애 상황을 피하고 재발을 방지하는 데 작은 도움이 되고자 이 책을 준비하였습니다.
이 책은 《자바 개발자와 시스템 운영자를 위한 트러블 슈팅 이야기》의 개정판입니다. 전판에서 다룬 것처럼 자바 기반의 시스템에 문제가 발생했을 때 문제의 원인을 빠르게 찾고 해결하는 데 집중하는 한편, 국내에서 개발된 scouter라는 오픈소스 APM을 활용해 장애를 진단하는 방법을 자세히 다룹니다. 특히, 다양한 사례 연구와 그 밖의 다양한 도구의 사용법을 20년 경력에서 얻은 저자만의 노하우를 담아 설명합니다.
이 책의 주요 내용
● 자바 기반 시스템에서 어떤 문제가 발생할 수 있는지 살펴본다.
● 장애 진단 요청에는 어떻게 대처하는지 알아본다.
● 각종 애플리케이션 성능 모니터링(APM) 도구를 소개한다.
● JVM 기반의 APM으로 유명한 scouter의 설치, 설정, 사용법을 자세히 설명한다.
● JVM 애플리케이션의 주요 장애 원인인 스레드와 메모리 정보로 장애를 분석한다.
● 리눅스, CPU, 프로세스, I/O, 네트워크 모니터링으로 장애를 분석한다.
● 이외에도 Arthas, 치명 에러 로그 분석, 자바 인스트럭션까지 살펴본다.
작가정보
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!
- 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
- 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
- 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
가장 와 닿는 하나의 키워드를 선택해주세요.
총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.
신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.
허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
있으니 유의하시어 신중하게 신고해주세요.
이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.
구매 후 90일 이내 작성 시, e교환권 100원 적립
eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.
차감하실 sam이용권을 선택하세요.
차감하실 sam이용권을 선택하세요.
선물하실 sam이용권을 선택하세요.
-
보유 권수 / 선물할 권수0권 / 1권
-
받는사람 이름받는사람 휴대전화
- 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
- 열람권은 1인당 1권씩 선물 가능합니다.
- 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
- 선물한 열람권의 등록유효기간은 14일 입니다.
(상대방이 기한내에 등록하지 않을 경우 소멸됩니다.) - 무제한 이용권일 경우 열람권 선물이 불가합니다.
첫 구매 시 교보e캐시 지급해 드립니다.
- 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
- 한 ID당 최초 1회 지급 / sam 이용권 제외
- 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
- 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)