[WAS] 장애 발생 유형

김봉남·2024년 2월 6일

WAS

목록 보기
14/23
post-thumbnail

장애 발생 유형

  • JVM Process Down
  • OutOfMemory Error
  • Slow Response
  • JVM Hang
  • 과부하

JVM Process Down

  • Java Core Dump를 생성하며 JVM Process 중지
  • JDK Bug로 인한 Process Down
  • Native Library(JNI) 충돌로 인한 Process Down
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fb21e88337a, pid=15230, tid=140402991798016
#
# JRE version: 7.0_09-b05
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.5-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [ShortestPathFinder.dll+0x1137a]  CXiNetworkData::GetNearestNodeID(double, double, bool)+0x1bc
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
#
Stack: [0x00007fd051f6e000,0x00007fd05206f000],  sp=0x00007fd052069988,  free space=1006k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libEdgeDbJni.so.0.1+0x1ce3e]  Java_com_klmatrix_edgedb_clientlib_EdgeDbCtx_create_1ctx+0x18dae

OutOfMemory(OOM) 발생 시

  • OOM 에러로 기본적인 내용 분석
  • 어플리케이션에서 잘못된 코드로 인한 불필요한 메모리 사용
  • Database에서 많은 데이터 조회(로딩)
  • OOM 분석 툴을 이용하여 메모리 분석 : Eclipse Mat, IBM Heap Analyzer

Hang / 응답 지연 / CPU 사용량 증가

Backend시스템 문제 발생

  • Database 응답 지연
  • 기타 연동 시스템 이슈 발생

Was Resource 부족

  • Thread 부족
  • Datasource 부족

OS Resource 부족

  • CPU, Memory, Disk 등

장애 발생 시 확인

  • 장애 현상에 대한 원인 및 내용 확인
  • 장애 발생 전 작업 내역 확인
  • CPU, Memory, Network, Disk 상태 확인
  • top, sar, free, vmstat, netstat, …
  • WAS 프로세스 상태 확인
  • Java Thread Stack
  • Heap Dump
  • Thread 상태 확인
  • Thread 별 CPU 사용률
  • Network Connection 상태
  • WEB 서버 상태 확인
  • WAS 서버와의 연동 모듈 확인
  • Network Connection 상태 확인
  • 로그 확인
    • WAS 로그
    • WEB 로그
    • OS 로그
    • 기타 연동 시스템 로그

hang/응답지연

  • 전체/일부 서비스의 응답 지연 여부 확인
  • 웹서버 연동시 웹서버와 연결시 동일 증상 확인
  • 병목 구간 확인
  • WEB <-> WAS
  • Application
  • DB
  • Application 레벨은 APM 사용
  • 주요 원인
    • SQL Slow Query
    • Database Connection Pool
    • NFS
    • 어플리케이션 알고리즘
    • JVM 메모리 설정에 따른 GC
    • 메모리 부족으로 인한 SWAP
    • 연동 어플리케이션의 응답지연
    • 사용자 폭주로 인한 기대 용량 초과

OutOfMemory

  • OutOfMemory Error Heap 메모리 부족이외에도 여러가지 이유로 발생
  • Java Heap Space
  • 일시적인 메모리 부족 또는 메모리 누수
  • GC 로그 패턴 확인
  • 메모리 누수의 경우 지속적으로 Heap Dump 분석
  • PermGen or MetaSpace
  • PermGen(1.8 이전), MetaSpace(1.8 이후) 메모리 부족
  • Requested byte for . Out Of swap space
  • Native Heap 메모리가 부족할 때 발생.
  • OS 의 Physical Memory 를 증설.
  • JNI의 메모리 누수 확인
  • Unable to create new native thread
  • OS Thread 개수 제한으로 발생
  • OS Thread 개수 제한 설정
    • /etc/security/limit.conf : nproc

장애 시 수집 데이터

  • Thread Dump

  • 응답시간 지연, Hang 발생시 수집

  • Java Thread Stack Snapshot

  • kill -3

  • jstack

  • 지속적으로 Thread Dump 를 확인하여 원인 확인

    • 예) 3초간격으로 5번 실행 (nohup 표준 출력 로그에서 확인)
  • Thread Dump 분석툴

    • Tdv(thread dump viewer)
    • fastthread.io
  • Heap Dump

    • Java 옵션 “HeapDumpOnOutOfMemoryError” 설정시 OOM이 발생하면 자동으로 생성
    • 메모리 누수가 의심될 경우 지속적인 Heap Dump 분석 필요
    • Heap Dump 생성시 JVM Hang이 발생
    • jmap -dump:format=b,file=heapdump.hprof
    • Heap Dump 분석툴
    • Eclipse Mat
    • IBM Heap Analyzer
    • HPJmeter

장애지연발생 lab

  • 응답시간이 지연되는 SQL query 를 생성하고 Thread Dump 를 확인
    • kill -3 또는 dump.sh 실행
profile
남자다

0개의 댓글