[WebLogic 14c] 성능 최적화 가이드: 스레드 풀 튜닝과 메모리 계산법
안정적인 Java 엔터프라이즈 서버 운영을 위한 핵심 모니터링 포인트
안녕하세요! 오늘은 WebLogic 14.1.x (14c) 환경을 운영하면서 가장 빈번하게 마주하는 성능 최적화 이슈를 정리해 보려고 합니다. 특히 순간적인 부하가 발생하는 시스템에서 필수적인 스레드 풀(Thread Pool) 튜닝과 Java 8 이후 변경된 메모리 계산 방식에 대해 심도 있게 다뤄보겠습니다.
1. WebLogic 스레드 풀(Thread Pool) 튜닝
WebLogic은 기본적으로 부하에 따라 스레드 수를 조절하는 Self-Tuning 모델을 사용합니다. 하지만 엔터프라이즈 환경에서는 스레드 생성 오버헤드를 방지하기 위해 최소/최대 값을 고정하는 것이 권장됩니다.
✅ 기동 옵션 적용 예시
-Dweblogic.SelfTuningThreadPoolSizeMin=100
-Dweblogic.SelfTuningThreadPoolSizeMax=100
* 시스템 환경에 따라 50~200 사이로 설정하며, Min/Max를 동일하게 설정하여 'Warm-up' 상태를 유지합니다.
2. 관리 콘솔을 통한 실시간 모니터링
설정한 스레드 풀이 정상적으로 동작하는지 확인하기 위해 WebLogic Admin Console의 모니터링 기능을 활용합니다.
📌 모니터링 경로:
환경(Environment) > 서버(Servers) > [대상 서버 선택] > 모니터링(Monitoring) > 스레드(Threads)
| 핵심 지표 | 의미 | 위험 신호 |
|---|---|---|
| Queue Length | 대기 중인 요청 수 | 지속적인 상승 |
| Stuck Threads | 고착된 스레드 | 1건 이상 발생 |
| Throughput | 초당 처리량 | 급격한 하락 |
3. 정확한 메모리 계산법 (Heap vs Metaspace)
Java 8 이후로는 Metaspace가 Native Memory 영역으로 이동했습니다. 따라서 전체 메모리 사용량 = Heap + Metaspace + Native 영역으로 계산해야 합니다.
💡 Metaspace 사용률의 오해
jstat -gc 명령어로 확인 시 전체 크기(MC)가 작게 보일 수 있습니다. 이는 JVM이 클래스 로딩 양에 맞춰 메모리를 동적으로 할당하기 때문입니다.
- MC (Metaspace Capacity): 현재 OS로부터 할당받은 크기
- MU (Metaspace Used): 실제 클래스 메타데이터가 점유한 크기
※ 운영 팁: 사용률 계산 시 MC가 아닌, 기동 옵션에서 설정한 MaxMetaspaceSize를 분모로 계산해야 정확한 자원 고갈 여부를 판단할 수 있습니다.
🚀 안정적인 운영을 위한 체크리스트
- ✅ 스레드 풀 Min/Max를 동일하게 설정했는가?
- ✅ Metaspace 사용률이 설정값 대비 90% 이하인가?
- ✅ JDBC 데이터소스의 'Maximum Capacity'가 적절한가?
본 가이드는 WebLogic 14.1.1 및 JDK 1.8 기반으로 작성되었습니다.

