이미 소장하고 있다면 판매해 보세요.
|
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 |
이상민의 다른 상품
|
에이전트 플러그인은 수집 서버가 아닌 scouter 에이전트에 지정해서 사용하는 플러그인을 말한다. 이 플러그인은 해당 시점에 메서드로 넘어온 매개변수의 값을 확인하거나 리턴되는 값을 확인할 때 유용하다. 예를 들어 어떤 특정 서버만 예외가 발생하는 경우 capture 플러그인을 사용하면 문제가 발생한 메서드의 매개변수나 리턴값을 확인할 수 있기 때문에 디버깅 용도로 아주 유용하게 활용할 수 있다. scouter에서 기본적으로 제공하는 에이전트 플러그인의 종류는 다음과 같다.
--- p.91 애플리케이션을 운영할 때 각종 프로그램의 응답 속도는 다르다. 그런데 대부분의 경우 진단을 하고 튜닝을 할 때 분석해야 하는 대상은 느린 애플리케이션이다. 0.1초 이하의 프로그램을 튜닝해야 하는 경우도 분명 존재하겠지만, 대부분의 응답 속도가 2~3초인 애플리케이션에서는 아주 빠른 1초 이하의 요청들은 분석할 일이 거의 없다. 게다가 이러한 요청들에 대한 프로파일링 정보를 저장할 경우 디스크를 많이 사용하므로 엄청난 낭비를 초래한다. 따라서, 이 경우에는 샘플링을 하여 디스크 사용량을 줄일 수 있다. scouter에서 샘플링을 사용하면 특정 비율만큼 프로파일링 정보들이 저장되고, TPS의 값은 문제없이 제공되며, XLog에 점이 전부 찍힌다. 샘플링은 자바 에이전트의 설정 파일에서 지정하면 된다. --- p.101 그중에서 데드록이 발생했거나 록이 걸려 여러 스레드가 그 록이 풀리기만을 기다리고 있을 때, 문제를 찾는 가장 좋은 방법이 바로 스레드 단면(스레드 덤프(thread dump))이다. 물론, scouter를 사용하면 쉽게 찾을 수도 있지만, scouter의 도입을 고민하고 있거나, 사용 못 하는 환경이라면 스레드 단면을 만들어 확인하는 것이 가장 간단하다. 게다가 시스템의 CPU가 100%에 도달하면 대부분의 모니터링 도구가 무용지물이 되기 때문에, 스레드 단면을 만들고 이해하는 방법을 알아 두는 것은 매우 중요하다. --- p.119 예외가 지속해서 발생할 때, 원인을 찾는 또 한 가지 방법은 scouter의 XLog에서 빨간 점들을 확인하는 것이다. 이 점들을 드래그하여 문제가 발생한 요청의 어느 부분에서 예외가 발생는지 확인하면 보다 빠르게 문제의 원인을 잡을 수 있을 것이다. 하지만 scouter의 메서드 프로파일링 옵션이 제대로 설정되지 않은 경우에는 정확한 위치를 찾기 어려우므로 예외 로그의 스택 트레이스(stack trace) 로그를 확인하는 것이 좋다. --- p.160 상용 프로파일링 도구를 사용하면, 어떤 라인 혹은 어떤 메서드에서 얼마나 많은 임시 객체가 생성되었는지 분석할 수 있다. 하지만 프로파일링 도구를 사용하여 메모리 사용량을 분석할 경우에는 성능에 많은 영향을 주기 때문에, 운영 서버에서는 절대 확인하려고 해서는 안 되며 개발자의 PC나 개발 서버에서 문제점을 확인해야만 한다. --- p.185 |
|
건강한 서비스를 위한 scouter 활용법은 물론,
그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다! 기술이 아무리 발전하고 뛰어난 개발자가 있더라도 사람이 만든 프로그램은 언제든 장애가 발생할 수 있습니다. 그럼에도 상당수의 개발자나 시스템 운영자는 트러블슈팅에 대해 교육받을 기회가 많지 않습니다. 그래서 빠르게 장애를 파악하고 분석하여 장애 상황을 피하고 재발을 방지하는 데 작은 도움이 되고자 이 책을 준비하였습니다. 이 책은 『자바 개발자와 시스템 운영자를 위한 트러블 슈팅 이야기』의 개정판입니다. 전판에서 다룬 것처럼 자바 기반의 시스템에 문제가 발생했을 때 문제의 원인을 빠르게 찾고 해결하는 데 집중하는 한편, 국내에서 개발된 scouter라는 오픈소스 APM을 활용해 장애를 진단하는 방법을 자세히 다룹니다. 특히, 다양한 사례 연구와 그 밖의 다양한 도구의 사용법을 20년 경력에서 얻은 저자만의 노하우를 담아 설명합니다. 이 책의 주요 내용 ● 자바 기반 시스템에서 어떤 문제가 발생할 수 있는지 살펴본다. ● 장애 진단 요청에는 어떻게 대처하는지 알아본다. ● 각종 애플리케이션 성능 모니터링(APM) 도구를 소개한다. ● JVM 기반의 APM으로 유명한 scouter의 설치, 설정, 사용법을 자세히 설명한다. ● JVM 애플리케이션의 주요 장애 원인인 스레드와 메모리 정보로 장애를 분석한다. ● 리눅스, CPU, 프로세스, I/O, 네트워크 모니터링으로 장애를 분석한다. ● 이외에도 Arthas, 치명 에러 로그 분석, 자바 인스트럭션까지 살펴본다. |