CHAP 01. 자바 기반의 시스템에서 발생할 수 있는 문제들

자바 트러블슈팅(scouter를 활용한 시스템 장애 진단 및 해결 노하우)를 챕터 1을 요약한 내용입니다.

서비스 운영중 발생할 수 있는 다양한 문제들

  • 개발자의 경험이나 실력 부족으로 인해 발생하는 시스템 오류

  • 장비에 대한 이상 현상

  • 외부 환경에 요인에 의한 시스템 다운(정전현상)

  • 실수로 운영 중인 시스템의 랜선을 뽑거나 타버리는 현상

어떻게 해결할 수 있을까?

가용 데이터가 확보되어 있을 경우

  • 서버 로그 확인

  • 서버 리소스 확인

가용 데이터가 확보되어 있지 않을 경우

  • 개인의 경험이나 직감을 활용

  • 단순히 서버 재시작(근본적인 문제 해결이 안되어 추후에 반복되는 오류 발생 가능성 증가)

어떤 종류의 문제점들이 있을까?

시스템이 느려요

막연히 시스템이 느리다고 하기보다는 조금 더 상세히 구분해 놓는 것이 좋다.

  • 전체 시스템이 항상 느린 경우 : 장비를 기동했을 때부터 느린 경우나 WAS(Web Application Server)를 시작했을 때부터 느린 경우

  • 특정 기능(화면)이 느린 경우 : 다른 화면은 다 괜찮은데 어떤 화면에만 들어가면 느려지거나 특정 기능만 느린 경우 (해당 케이스만 재현하면 되므로 문제해결이 다소 수월하다)

  • 특정 시간대(기간)에 전체 애플리케이션이 느린 경우 : 전체 애플리케이션의 응답 속도가 괜찮다가 특정 시간대가 되면 애플리케이션의 속도가 느려지는 경우

  • 특정 시간대(기간)에 특정 애플리케이션이 느린 경우 : 특정 화면이 시스템 재시작 시에는 괜찮다가, 사용량이 많아지거나 날짜가 지날수록 점점 느려지는 경우(재현이 어려워 문제해결이 어렵다)

  • 특정 사용자만 애플리케이션이 느린 경우 : 이런 경우는 흔치 않지만, 특정 사용자만 애플리케이션이 느리다고 하소연하는 경우

시스템 응답이 없어요

시스템의 응답이 없는 경우와 죽는 경우는 어찌 보면 같을 수도 있지만, 실상은 완전히 다르다.

  • 모든 애플리케이션이 응답하지 않는 경우

  • 특정 기능(화면)이 응답하지 않는 경우

사용자의 입장이 아닌, 개발자나 운영자의 입장에서는 다음과 같이 구분할 수 있다.

  • WAS 장비의 CPU 사용량은 10% 이내지만 시스템이 응답하지 않는 경우 : 시스템 내/외적인 원인 때문에 정상적인 기능을 못 하는 경우다

  • WAS 장비의 CPU를 하나 이상 100% 점유하면서 시스템이 응답하지 않는 경우 : 시스템 내적인 문제 때문에 정상적인 기능을 못 하는 경우다

예외가 계속 발생해요

예외가 계속 발생하는 경우를 상세하게 분류하면 다음과 같다.

  • 모든 사용자가 특정 기능을 수행하면 예외가 발생하는 경우 : 특정 애플리케이션이 문제가 있는 경우

  • 특정 사용자의 특정 기능에서만 예외가 발생하는 경우 : 어떤 조건(혹은 사용자)에 따라서 발생하는 경우

  • 특정 시간대에만 전체 애플리케이션에 예외가 발생하는 경우 : 평소에나 사용자가 많지 않을 때 예외가 발생하지 않다가 사용자가 증가하거나 특정 시점이 되면 전체 애플리케이션에 발생하는 경우

  • 특정 시간대에 특정 애플리케이션에 예외가 발생하는 경우 : 평소에나 사용자가 많지않을 때 예외가 발생하지 않다가 사용자가 증가하거나 특정 시점이 되면 특정 애플리케이션에 발생하는 경우

시스템이 죽어요

말 그대로 시스템의 프로세스가 죽는 경우를 말한다. pid가 시스템에서 사라지게 되는 경우가 여기에 속한다. 프로세스가 죽는 문제가 발생하면, 대부분은 시스템을 다시 시작한다. 만약 여유가 있을 경우에는 분석 작업을 실시한다. 뭔가 실마리를 남겨놓고 죽는 경우는 그나마 상황이 나은 편이다. 하지만 그러한 실마리도 없이 죽으면 할 수 있는 것이 없다. 기본적으로 JVM에서 제공하는 충돌 로그(fatal error log)파일이 생성되는데, 이를 분석하는 게 일반적이다.

발생 가능한 병목 지점들

성능을 저하시키는 원인들을 모두 병목지점이라 말한다. 한 시스템에서 성능이 안 좋거나 문제가 발생하는 원인을 제공하는 대상은 수도 없이 많다.

그렇다면 어디서 문제가 발생할 수 있을까?

  • 웹 서버

  • 웹 애플리케이션 서버

  • 각종 API 서버

  • DB 서버

  • 데몬 프로그램

  • 레거시 시스템

  • 기타 생각지도 못한 서버

문제의 원인이 될 수 있는 구성 요소

  • CPU

  • 네트워크

  • 메모리

  • 디스크 및 파일 서버

  • OS 커널

Last updated