1. 미들웨어이야기/01. JVM

Thread dump(Javacore) 분석 – waiting for IO response

OSSW(Open Source System SoftWare 2009. 6. 8. 15:22

Thread 상황 많이 있는 패턴은 각각의 Thread들이 IO Response 기다리는데 IO 작업에서 response 느리게 와서 시스템 처리 속도가 느려지는 경우입니다.


[
그림 1].Thread들이 IO Wait 시간에 따른 Thread dump 상황


[그림 2]. Thread DB Query Wait 걸려있는 stack

그림1 상황은 DB Query 보내고 response Thread들이 기다리고 있는 상황입니다. AP에서 JDBC 통해서 Query 보냈는데, Response 오지 않으면 계속 기다리게 있게 되고 다른 Thread 같은 DB 보냈는데, Response 오지 않고, 이런 것들이 중복돼서 결국은 사용할 있는 Thread 없게 되서 새로운 request 처리하지 못하게 되고, 기존에 Query 보낸 내용도 응답을 받지 못하는 상황입니다.

그림2 각각의 Thread stack dump 인데, 내용을 보면 ExecuteQuery 수행한 후에 Oracle로부터 데이터를 read하기 위해 대기하는 것을 확인 있습니다. 이런 현상은 주로 DB 사용시 대용량 Query(시간이 많이 걸리는) 보냈거나, DB Lock들에 의해서 발생하는 경우가 많으며, 외에도 Socket이나 File 사용하는 AP 경우 IO 문제로 인하여 발생하는 경우가 많습니다.

해결방안

문제의 해결 방안은 Thread Dump에서 문제가 되는 부분을 발견한 후에, 해당 소스코드나 시스템 등에 접근하여 문제를 해결해야 합니다.