
Web Application을 서비스 할 때, 대부분의 서비스는 DB 자원에 접근을 해야 한다.
그 자원을 Connection이라 하면, 그 자원들이 모여있는 곳을 Connection Pool이라 한다.
WebLogic 과 DB간의 Connection Pool에 대한 Capactity를 설정을 할 때,
관리콘솔 - 서비스 - '데이터소스' - '${각 데이터소스}' - 구성 - '접속 풀' 에서 설정을 하게 된다.
우선 Connection은 open을 하여 사용하고, close를 통해 반환하게 된다.
WebLogic의 out 로그상에 Reached Maximum Capacity Pool 로그가 찍히게 되는 경우가 발생하는데,
해당 현상은 Connection Pool이 최대 Capa까지 사용중이어서, 더 이상 사용할 수 있는 Connection이
없음을 나타내는 로그이다.
이러한 현상이 발생할 경우, 즉각적인 해소를 원한다면 WAS 인스턴스를 재기동하여
Connection을 강제적으로 반환하게 하는 방법이 있다.
다만, 재기동 이후에도 해당 현상이 반복된다면 따져봐야하는 Point들이 있는데, 이를 알아보자.
1) Application의 로직중에서, Connection 객체에 대해 Open/Close가 잘 되어 있는가?
보통은 Web Application에서 Connection을 맺고 끊는 부분중, close 가 잘 안 된 경우,
Connection Leak이 발생하여 해당 현상이 유지될 수 있다.
SQLRecoverableException 과 같은 SQL과 연관이 있는 로그가 WAS의 out로그 상에 남는데,
애플리케이션 쪽에 close가 잘 되어 있는지 확인을 요청해야 한다.
2) Application을 확인해 보았는데, open/close가 잘 되어 있다. 근데 Capa 양이 부족해 보이는데 어떻게 해야 할까?
이 경우에는 Connection Pool을 늘리면 된다. 매우 직관적인 작업이다.
다만 이 작업을 하게 되면 주의해야할 부분이 있다. 바로 DB에 남은 Session 수를 체크해야 한다.
위의 사진을 보면 최대 용량의 수는 '15'인 것을 확인 할 수 있다.
이 말은 WAS 인스턴스 하나가 최대 15개의 Connection을 사용할 수 있음을 의미한다.
예시) 만약 WAS 인스턴스가 10개라 가정, DB에 남은 Session수를 1000개라 하면,
최대로 늘릴 수 있는 Capa의 양은 100개이다.
※ 최대 Capa를 WAS단에서 조정하고싶어도, DB에 남은 Session가 부족하다면 Capa 값을 함부로 늘리면 큰일난다.
※ 그리고 Capa가 늘어남에 따라 WAS의 처리량도 늘어난 만큼, WAS 인스턴스의 Heap 메모리 사용량도 늘기에
java.lang.OutOfMemoryError가 발생할 확률이 올라 갈 수 있다.
※ 최소 용량 / 최대 용량은 같은 값으로 맞춰주자
3) Application을 확인해 보았는데, open/close가 잘 되어 있고, Capa의 양도 적절하다. 이 경우에는 어떻게 해야 할까?
우선은 서비스가 몰렸을 수도 있다. 이 경우에는 사용자 접속이 끝나서 반환이 이뤄지는걸 기다리는 방법 말고는 없다.
질문) 그럼 이러한 경우에는 일정 시간이 지나면 Connection을 반환하도록 설정할 수는 없나요?
답변) 옵션이 있긴 하나, 해당 옵션은 사용을 하지 말것을 말하고 있습니다. (InactiveConnectionTimeoutSeconds)
서비스를 이용하다가 정수기 물 마시러 나갔는데, 물 떠오니 내가 하던 작업이 초기화 되있으면 어떤 기분이 들겠는가?
'WAS > WebLogic' 카테고리의 다른 글
| '변경 내용 활성화' 시, 발생하는 TimeOut (0) | 2023.07.19 |
|---|---|
| 애플리케이션 배포 시, 라이브러리 충돌이 나는 경우 대처 (2) | 2023.07.17 |
| oraInventory 경로 재설정 하기 (0) | 2023.07.14 |
| weblogic plugin enabled - 실제 경험 케이스 (0) | 2023.07.14 |
| weblogic plugin enabled - 개요 및 설정 (0) | 2023.07.14 |