Skip to content

Latest commit

 

History

History
105 lines (74 loc) · 3.28 KB

01-diagnosis.md

File metadata and controls

105 lines (74 loc) · 3.28 KB

01. 진단 — 적용 전 확인

처방 들어가기 전 본인 환경이 이 가이드의 시나리오와 맞는지 확인.

진단 1 — 정적 리소스가 Tomcat을 거치고 있는가

# 정적 리소스 URL에 curl
curl -I https://your-domain.example/resources/css/main.css

응답 헤더에 Server: Apache + Tomcat의 흔적(X-Powered-By 등)이 같이 보이면 의심. 더 확실하게:

# Apache access_log
tail -f /usr/local/httpd/logs/access_log | grep "css/main.css"

# Tomcat catalina.out 또는 access log
tail -f /usr/local/tomcat/logs/localhost_access_log.YYYY-MM-DD.log | grep "css/main.css"

Tomcat access log에 정적 파일 요청이 찍히면 진단 1 확정.

진단 2 — Rewrite가 정적 경로를 건드리는가

# Apache rewrite 로그 활성화 (임시)
# httpd.conf 또는 vhost
LogLevel rewrite:trace3

재기동 후 정적 리소스 요청을 보내면 rewrite_log 또는 error_log에 변환 흔적이 보인다.

RewriteEngine: applying rules to /resources/css/main.css
RewriteRule: substituting /ott/resources/css/main.css

이런 라인이 보이면 Rewrite가 정적 경로를 건드리는 중. JkUnMount를 무력화하는 그 패턴.

진단 3 — AJP Connector 설정 확인

# Tomcat server.xml
grep -A 5 "AJP/1.3" /usr/local/tomcat/conf/server.xml
<Connector protocol="AJP/1.3" port="8009"
           ... />
<!-- executor=... 가 없거나, HTTP Connector와 다른 executor를 가리키면 진단 3 해당 -->

또는 런타임에 JMX/Manager 화면에서 ThreadPool 사이즈 확인:

http-nio-8080: maxThreads=800
ajp-nio-8009:  maxThreads=200   ← 별도 풀, 작음

진단 4 — 스왑 사용 확인

free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       9.0Gi       1.5Gi       400Mi       5.0Gi       6.0Gi
Swap:         8.0Gi       2.3Gi       5.7Gi
  • Mem.available이 충분 (4GB 이상)
  • Swap.used가 1GB 이상

둘 다 해당하면 진단 4. RAM 여유 있는데 스왑이 점유된 상태 = 디스크 I/O 발생 중.

진단 결과 정리표

진단 해당 적용 단계
1 — 정적이 Tomcat 경유 ☐ Step 1 (02-jk-static-separation.md)
2 — Rewrite가 정적 경로 변환 ☐ Step 2 (03-rewrite-priority.md)
3 — AJP 별도 풀 (작음) ☐ Step 3 (04-ajp-thread-pool.md)
4 — 스왑 1GB+ 사용 중 ☐ Step 4 (05-swap-cleanup.md)

체크된 항목만 순서대로 적용해도 되고, 시간 여유 있으면 4개 다 적용해도 좋다. 진단 1·2만 해결해도 정적 응답 시간 차이가 가장 크게 난다.

진단 vs 적용 시점 분리

전 단계를 한 번에 적용하지 말고, 하나 적용 → 측정 → 다음 적용 흐름 권장:

# 측정 스크립트
./scripts/measure.sh https://your-domain.example/resources/css/main.css

# 결과 기록 → 다음 단계 적용 → 다시 측정 → 차이 확인

각 단계가 어느 정도 효과인지 본인 환경에서 검증 가능.

다음 문서 → 02-jk-static-separation.md