게이트웨이 정적 파일 서빙 성능 최적화 (A1) — 완료·라이브검증
개요
재부팅으로 중단된 "Gateway 정적 서빙 최적화" 세션을 복구·완료. 정적서빙 A1(fork 감축)은
직전 진화루프에서 소스에 적용됐고, 이번 세션에서
소스→라이브 바이너리→런타임 바이트무결성을
end-to-end 검증해 완료 확정. 부수로
gw doctor 로케일 크래시 버그 수정.
무엇을 했는지 (검증 중심)
- A1 소스 확인 —
게이트웨이통합.한선 _정적스트리밍이 네이티브 파일소켓전송
(opcode 856, C레벨 fread→write 64KB) 사용 → 요청당 fork 0. 구 dd 청크 셸아웃(10MB=625 fork) 제거됨.
Content-Length는
파일바이트수=네이티브
stat()(crownyc.c:9361) → 전체읽기 없음, 단일 stat.
- 라이브 = 소스 증명 — 현재 소스를 그림자 컴파일 →
/tmp/gwlive.toau와 byte-identical(cmp 일치).
즉 라이브 게이트웨이가 최적화 소스를 그대로 구동 중(2026-06-30 20:33 빌드).
- 런타임 바이트무결성 — security.crowny.org/index.html(26,011B) 게이트웨이 경유 서빙,
디스크 원본과 SHA256 일치(372fa4c1...), 0.036s. fork-0 정적경로 정상.
- gw doctor 버그 수정 — Korean 문자열의
$n개 표현이 C 로케일(launchd/워치독)에서
변수명
n<byte> 흡수 →
unbound variable 크래시.
${n} 브레이스로 로케일 무관 안전화.
LC_ALL=C gw doctor 재현→해소 확인,
bash -n OK.
관련 파일
- /Users/ef/crowny-gateway/한선게이트웨이/게이트웨이통합.한선 (_정적스트리밍 line 346, _요청처리 line 441-445)
- /Users/ef/crowny-gateway/게이트웨이Q/번들libs/게이트웨이SPA정적코어.한선 (정적맵/조회)
- /Users/ef/crowny-gateway/gw (line 115·121 ${n} 수정)
- /Users/ef/CrownyOS/crownyc/crownyc.c:9361 (파일바이트수=stat), opcode856(파일소켓전송)
잔여 이슈
- gwlive 인스턴스 2개 (PID 3681+4447, SO_REUSEPORT 공존) — start.sh/워치독 재시작 경합.
현재 전 도메인 200(무장애). org.crowny.gwhealth + sysguard가 자동 수렴(중복 toau cull).
필요 시 정본 복구: 전체 pkill gwlive → 리스너0 확인 → 단일
gw restart(kickstart org.crowny.gateway).
- 정적서빙 A1 외 최적화 백로그(별건, 정밀 단독): C3 WS 소켓 타임아웃(옴/보류),
B-1 4상 프록시(죽은 백엔드 빠른실패), A2 단일패스, RateLimit 라이브배선, SNI생성기 디렉토리스캔.