반응형
https://www.yes24.com/Product/Goods/84937877
자바 기반의 시스템에서 발생할 수 있는 문제들
서비스나 시스템 장애가 발생하면 대부분은 서버의 로그를 보거나 서버의 리소스 사용량을 보고 짐작
경험이 풍부 -> 데이터를 기반으로 문제의 원인을 쉽게 찾아냄
경험이 없음 -> 중요 데이터를 수집하지 않고 서버를 재시작 하는 경우가 있음
어떤 문제가 발생할 수 있을까?
- 시스템이 느려짐
- 시스템 응답이 없음
- 예외 발생
- 시스템 죽음
시스템이 느려짐
시스템이 느리다는것은 너무 큰 범주
어느정도 상세히 구분하면 다음과 같음
- 전체 시스템이 항상 느린 경우 : 장비를 기동했을 때부터 느린 경우나 WAS를 시작했을 때 부터 느린 경우
- 특정 기능이 느린 경우 : 다른 기능들은 괜찮은데 특정 기능만 느린 경우
- 특정 시간대에 전체 애플리케이션이 느린 경우
- 특정 시간대에 특정 애플리케이션이 느린 경우
- 특정 기능이 점점 느려지는 경우
- 특정 사용자만 애플리케이션이 느린 경우
이중 특정 기능만 느린 경우는 원인을 찾기 쉬움
특정 시간대에 특정 애플리케이션만 느린경우는 원인을 찾기 어려움, 재현이 힘들기 때문
시스템 응답이 없음
프로세스가 살아 있지만 아무런 응답이 없는 경우
응답이 매우 느린것이 응답이 없는것처럼 보일 수 있음
- CPU 사용량은 10%이내지만 시스템이 응답하지 않는 경우 : 시스템 내/외 적인 원인이 있을 수 있음
- CPU 를 하나 이상 100%점유하면서 시스템이 응답하지 않는 경우 : 내적인 문제일 가능성이 높음
예외가 계속 발생
예외가 계속 발생할 경우 원인은 애플리케이션을 잘못 코딩한 경우가 대부분
- 모든 사용자가 특정 기능을 수행하면 예외가 발생 : 특정 애플리케이션 이슈
- 특정 사용자의 특정 기능에서만 발생 : 특정 조건에 따라 발생
- 특정 시간대에만 전체 애플리케이션에 예외 발생
- 특정 시간대에 특정 애플리케이션에 예외 발생
예외 발생시 가장 큰 힌트는 시스템 로그
시스템이 죽음
프로세스가 죽는 경우
대부분 시스템을 재시작
기본적으로 JVM에서 충돌로그를 제공하는데 해당 로그를 분석
개발자가 개발만 잘하면 된다고 생각하지 말자
병목을 조심하자
https://github.com/vljh246v/TIL-NEW/tree/main/troubleshooting
반응형
'IT > JAVA' 카테고리의 다른 글
스프링 빈 생명주기 메서드와 실행 순서 (0) | 2021.04.12 |
---|---|
ThreadLocal에 대해서 알아보자 - 1 (0) | 2021.03.12 |
Java Garbage Collection (1) | 2020.11.09 |
Java HashMap은 어떻게 동작하는가? (0) | 2020.11.05 |
Filter 를 활용한 ACL 만들기 (feat. Spring) (0) | 2019.11.15 |