아래와 같이 CustomLog를 작성해주면 된다.
설정의 의미는 SSL에 쓰일 수 있는, SSL Protocol과 CIPHER 정보를 보기위해 사용하는 rotatelogs 설정이다.
CustomLog "|${JBCS_HOME}/httpd/sbin/rotatelogs /DATA/LOG/test-ssl-request_log.%Y%m%d 86400 +540" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b %D"
해당 로그 설정의 경우, syntax ERROR을 내더라도 httpd 서비스 자체는 문제 없이 기동된다.
하지만, 해당 설정에 대해서 syntax Error로 인하여 서비스 HANG 현상이 발견될 수도 있다.
🔴 Hang이 발생할 수 있는 시나리오
1. rotatelogs 프로세스 비정상 종료 → 파이프 블로킹
Apache Worker → pipe → rotatelogs 프로세스
- rotatelogs가 잘못된 인자로 인해 즉시 종료되면
- Apache 워커가 로그를 파이프에 write() 하려다 SIGPIPE 또는 블로킹 발생
- 요청 처리 중 로그 write가 블로킹되면 → 해당 워커 스레드/프로세스가 hang
2. 파이프 버퍼 포화 (Pipe Buffer Full)
- rotatelogs가 죽거나 느려지면 파이프 버퍼(보통 64KB)가 가득 참
- Apache는 버퍼가 빌 때까지 write() 에서 무한 대기
- 워커가 모두 여기서 막히면 → 전체 서비스 hang처럼 보임
3. 파일명 패턴 문제로 rotatelogs 반복 재시작
# +540 뒤에 %t %h 등이 인자로 붙는 경우
rotatelogs ... 86400 +540 [27/Apr/2026:12:00:00 +0900] 192.168.x.x ...
- rotatelogs가 알 수 없는 인자로 즉시 exit → Apache가 재시작 → 또 exit 반복
- 이 과정에서 파이프 열고 닫기가 폭풍처럼 반복되어 부하 유발
🟡 Hang까지는 아니지만 장애로 이어지는 시나리오
| rotatelogs 계속 죽고 재시작 | CPU/FD(파일디스크립터) 고갈 |
| 로그 write 지연 누적 | 응답 지연 (Latency 증가) |
| 워커 프로세스 고갈 | 신규 요청 거부 (503) |
나만 이런 현상을 겪는건가 싶어서 검색을 해보니, rotatelogs로 인해 HANG 현상을 겪은 글들이 몇몇 보였다.
아래의 글들은 syntax 에러는 아닌듯 싶지만, rotatelogs에 의해 HANG 현상이 목격된 것으로 보여
같이 첨부해본다.
===========
https://www.apachelounge.com/viewtopic.php?t=8558
https://github.com/owasp-modsecurity/ModSecurity/issues/2822
ModSecurity can cause hang of apache httpd during graceful restart · Issue #2822 · owasp-modsecurity/ModSecurity
Describe the bug When modsec is configured to pipe logs to different process (like rotatelogs for example) it can cause hang of apache httpd during graceful restart. When SecAuditLog directive is s...
github.com
===========
결국은 mpm에서 childprocess 값을 늘려도 의미가 없다는 것이다. 마치 OutofMemoryError 같은 거다.
'WEB-SERVER > OHS & JBCS & Apache' 카테고리의 다른 글
| [JBCS 2.4.62] 일반 OS 유저가 1024 이하 Port 사용하는 방법 (0) | 2026.05.13 |
|---|---|
| Execution error - PCRE limits exceeded (-47): (null) (0) | 2026.04.15 |
| [Apache/JBCS] SSL인증서 암호 제거 및 Password 자동 입력 방법 (0) | 2026.04.14 |
| mod_proxy(적용) (0) | 2026.04.14 |
| mod_proxy(이론) (1) | 2026.04.14 |