감사서버.한선 STR_ID_MAX 크래시 — 게이트/API 2분할
개요
/Users/ef/crowny-butler/감사서버.한선(1391줄, 36326큐브)이 단일 프로세스로 문자열 핸들 상한
(STR_ID_MAX=480000) 90%에 도달해 요청 처리 중 exit43 크래시. 요청처리() 함수(672줄, 26라우트)의
큐브가 STR 주범으로 실측 확정됨(라이브러리 로드만=STR경고0, 요청처리 본문 제거 껍데기=STR경고0).
→ 라우트를 두 한선씨 서버로 분할해 각각 STR 여유 확보.라이브 9802(감사서버.js, Node)는 무접촉 — 신규 파일 2개만 생성, 실검증 후 테스트 포트에서 kill 정리.
무엇을 했는지
분할 설계
- 감사게이트.한선 (기본 9802, 테스트 9806): 정적서빙(
/,/what,/audit,/현황,/status,/board,/app/*),
/api/decide, /health·/api/health, /api/cells/llm-log, ERP프록시(/api/plm/*,/api/erp/*,
/api/bridge,/api/cells/scan). 나머지 /api/*는 전부 프록시요청()으로 감사API(127.0.0.1:9805)에
소켓 프록시(패턴 매칭이라 auth/rules/board/log/replay/whatif 개별 라우트 하드코딩 불필요).
- 감사API.한선 (기본 9805):
/api/board,/api/log,/api/replay,/api/whatif,
/api/rules(조회/check/save/history/rollback), /api/auth/register·/api/auth/login
(SHA256 2만회 키스트레칭 강화 해시 그대로 이식).컴파일 실측
| 파일 | 큐브 | STR 부팅 직후 경고 |
|---|---|---|
| 감사게이트.한선 | 23,180~23,276 | 0건 |
| 감사API.한선 | 27,275 | 0건 |
| (참고) 원본 감사서버.한선 | 36,326 | 90%(432000/480000) |
발견/수정한 잠재 버그 2건 (원본 프록시요청() 헬퍼에 이미 존재하던 결함, 이번에 실측 확정)
소켓연결()2인자 호출 = 항상 -1 — hanseonc_high 내장테이블 op374는 3-pop(소켓슬롯,주소,포트)인데
소켓연결("127.0.0.1", 포트) 2인자로 호출해 프록시가 전부 죽어있었음(연결 자체가 안 됨,
원본 감사서버.한선의 ERP프록시 라우트도 동일 결함 추정). 표준 패턴(소켓생성(2,1) → 소켓연결(소켓,주소,포트))
으로 수정 — 코드베이스 내 crowny-butler/libs/넥서스분기_코어.한선 등 정상 사례로 대조 확인.
소켓받기()단발 호출 = 대용량 응답 절단 — 1회 recv만으로는 7KB(/api/board) 이상 응답이 헤더만
/api/log(57KB) 등
대용량 응답도 정상 relay 확인.
→ 가드레일에 반영 필요(~/.claude/templates/한선씨-가드레일.md): "소켓연결은 3인자 필수,
소켓받기 단발호출은 대용량 응답에서 절단 — EOF까지 반복 수신".참고: 별개로 발견한 기존 이슈(이번 작업 범위 밖, 미수정)
/현황(한글 경로) 직접 curl 접근 시 게이트/API 양쪽 모두 404 — curl이 UTF-8 경로를 퍼센트인코딩해서
경로추출()이 URL디코딩을 안 해 문자열비교가 실패함. 라이브 9802(node)는 200(Node http가
자동 디코딩) — 이 결함은 원본 감사서버.한선(.js 아님, 미가동 한선씨 이식판) 자체에 이미 있던 것으로,
이번 분할과 무관하게 동일 재현됨. 브라우저/실사용은 대개 ASCII 라우트(/status,/board)로 우회 가능.
넥서스.toau(38971큐브,/api/decide·/api/replay가 서브프로세스로 호출) 단독 실행 시 자체
체계()로
매 호출마다 새로 뜨는 별도 VM 인스턴스라 우리 HTTP 서버(게이트/API)의 장기 STR 예산과는 무관하지만,
넥서스.toau 자체도 잠재적으로 같은 STR_ID_MAX 근접 위험이 있어 보임 — 별도 점검 필요.관련 파일
/Users/ef/crowny-butler/감사게이트.한선(신규)/Users/ef/crowny-butler/감사API.한선(신규)/Users/ef/crowny-butler/감사서버.한선(원본, 무접촉·보존)/Users/ef/crowny-butler/감사서버.js(라이브 9802, 무접촉)~/.claude/templates/한선씨-가드레일.md(§"대형 한선씨 서버 STR_ID_MAX 상한" 항목 참조)
잔여 이슈
- 미배선: 두 신규 .한선 파일은 컴파일·기능 검증만 완료, 아직 어떤 LaunchAgent/게이트웨이에도
- 가드레일 갱신 미완: 위 소켓연결/소켓받기 함정 2건을
한선씨-가드레일.md에 아직 반영 안 함. /현황한글경로 URL디코딩 결함,넥서스.toau자체 STR 근접 건 — 둘 다 미수정(범위 밖으로 판단, 별도 티켓 권장).