Apache + Tomcat (mod_jk AJP) 환경에서 정적 리소스만 갑자기 느려졌을 때 푸는 4단계 처방. 본인 사이트 운영 사례에서 정적 응답 0.133초 → 0.038초 (약 3.5배 향상).
- Apache + Tomcat (mod_jk AJP) 환경 운영 중
- 어느 시점부터 정적 리소스(CSS·JS·이미지·폰트) 로딩이 비정상으로 느림
- 관리자 페이지(주로 동적)는 빠른데 사용자 페이지(정적 비중 ↑)만 느림
- "동적은 Tomcat, 정적은 Apache"라는 원칙은 알지만 실제 구성이 안 되어 있음
| 사이트 | 최적화 전 | 최적화 후 | 비고 |
|---|---|---|---|
| 사이트 A | Tomcat 경유 (느림) | 0.038초 | Apache 직접 서빙으로 전환 |
| 사이트 B | 0.133초 | 0.038초 | 약 3.5배 향상 |
추가 변화:
- 스왑 메모리 2.3GB → 1.1GB (1.2GB가 RAM으로 복귀)
- AJP Connector 병목 제거 (HTTP 풀과 800 스레드 공유)
Alias+JkUnMount— 정적 리소스를 Apache가 직접 서빙. mod_jk 라우팅에서 제외RewriteCond추가 — Rewrite가 먼저 동작해JkUnMount를 무력화하지 않도록 정적 경로 제외 조건 추가- AJP Connector
executor공유 — Tomcat HTTP 풀(800 스레드)과 AJP 풀을 일원화 - 스왑 정리 —
swapoff -a && swapon -a로 RAM 여유 회복
- OS: Rocky Linux 8 / CentOS 7 (RHEL 7+ 계열)
- Apache: 2.4.46 (소스 빌드 또는 패키지)
- Tomcat: 9.0.x
- 연동: mod_jk 1.2.x (AJP)
- 본 가이드는 위 조합에서 실 운영 적용한 사례를 일반화한 것이다.
| 문서 | 내용 |
|---|---|
docs/00-context.md |
어떤 상황 — 서버 이전 후 정적 리소스 지연 |
docs/01-diagnosis.md |
진단 — "관리자 빠름·사용자 느림"이 알려주는 것 |
docs/02-jk-static-separation.md |
Step 1 — Alias + JkUnMount로 정적 분리 |
docs/03-rewrite-priority.md |
Step 2 — Rewrite 조건 추가 (JkUnMount보다 먼저 동작) |
docs/04-ajp-thread-pool.md |
Step 3 — AJP Connector executor 공유 |
docs/05-swap-cleanup.md |
Step 4 — 스왑 정리 + 디스크 I/O 영향 |
docs/06-verification.md |
측정 방법 + 결과 |
docs/07-further-improvements.md |
추가 권장 — HTTP/2 · Lazy Loading · 이미지 최적화 |
docs/08-pitfalls.md |
자주 만나는 함정 6개 |
설정 예시: configs/ · 측정 스크립트: scripts/
# 1. 진단 - 측정 스크립트로 현재 상태 확인
./scripts/measure.sh https://your-domain.example/static/sample.css
# 2. Apache vhost에 Alias + JkUnMount + RewriteCond 적용 (configs/httpd-vhosts.conf.example 참조)
sudo systemctl reload httpd
# 3. Tomcat AJP Executor 공유 적용 (configs/server.xml.example 참조)
sudo systemctl restart tomcat
# 4. 스왑 정리 (RAM 여유 사전 확인)
./scripts/swap-check.sh
sudo swapoff -a && sudo swapon -a
# 5. 재측정
./scripts/measure.sh https://your-domain.example/static/sample.cssapache-openssl-source-build-guide— 같은 Apache 인프라 운영의 보안 측면 (소스 빌드 + 보안 헤더)claude-workflow-starter— AI 운영 모델 시작 템플릿
본 저장소는 성능 측면. 보안과 성능, 같은 Apache 운영의 두 면.
MIT.
본인 환경의 도메인·내부 경로·사내 식별자는 모두 일반 예시로 치환되어 있습니다. 가져가서 본인 환경에 맞게 적용하세요. 핵심은 절차 자체가 아니라 "왜 그렇게 분리하는가"입니다.