내 잡다한 노트
Hang up 이란? 본문
정의 : 통상적으로 시스템이 느려지거나 멈추는 현상을 Hang up 이라고 한다.
Server Instance는 실행되고 있으나, 아무런 응답이 없는 상황을 말한다.
비슷한 의미로 slowdown이 있다. server instance의 응답이 매우 느려지는 상태이다.
이런 현상들은 대부분이 network, user application, jvm, rdbms, web/was 중 하나 이상의 병목으로 인해서 발생한다.
Hang up의 다양한 유형
1. Deadlock
multi thread 사용 시 공유 영역을 보호하기 위해 locking을 사용한다.
두 개 이상의 thread가 서로 lock을 잡고 기다리는 상태. 서로 lock이 풀리지 않고 무한정 대기하는 상태를 말한다.
2. JDBC로 인한 Server Hang 현상
응용프로그램 또는 JDBC Connection Pool을 사용할 경우 JDCD Deadlock 이 발생할 수 있다.
Database에 대한 sql 쿼리 결과가 너무 오래 걸리는 경우
db에 쿼리를 보내고 response를 쓰레드들이 기다리고 있는 상황이다. AP에서 JDBC를 통해서 쿼리를 보내는데 response가 오지 않으면 계속 기다리게 되고, 다른 쓰레드가 같은 db로 보냈는데, response가 오지 않고, 이런 것들이 중복돼서 결국은 사용할 수 있는 쓰레드가 없게 돼 새로운 request를 처리하지 못하고 기존에 쿼리로 보낸 내용도 응답을 받지 못하는 현상이다.
db 사용시 대용량 쿼리를 보내거나 db에 lock들에 의해 발생하는 경우가 많다.
이 문제를 해결하기 위해서는 thread dump에서 문제가 되는 부분을 발견하여 해당소스나 시스템에 접근하여 문제를 해결한다.
DeadLock으로 인해 모든 thread가 Hang인 경우
db 및 application에서의 데드락은 정지 상태로 만들 수 있다.
데드락이 있는지 알아보려면 thread dump를 확인해야한다.
일반적으로 db에서 데드락이 발생하는 원인으로는 하나 이상의 트랜잭션을 rollback한다.
느리거나 오버헤드 상태인 네트워크로 인해 db 호출이 느리거나 hang인 경우
'Infra' 카테고리의 다른 글
QPS란? (0) | 2025.02.09 |
---|---|
Region과 Availablity Zone (0) | 2025.01.22 |
Hot/Warm/Cold Architecture 이란? (0) | 2025.01.21 |
RAID 란? (0) | 2025.01.11 |
ITIL ( IT Infrastructure Library ) (0) | 2025.01.11 |