크라우니집사회(deacon:9772) 무응답 장애 수리 — 서명 캐시를 집계 계층까지
개요
MCP 연결 검토 요청을 받아 집사회 표면을 확인하던 중 서버 전 읽기 라우트 무응답을 발견, 수리했다. 미션 M22("deacon캐시TTL — stats claim 장부 전체 재파싱을 mtime 캐시 TTL로 제거")가 같은 날 15:40 발행돼 있었는데, 이 작업이 그 내용을 구현한다.
증상 (발견 시점 실측)
프로세스 crownyc run 서버.toau (pid 14060) — 살아있음, 포트 9772 LISTEN
CPU/RSS 82% / 3.36GB
가동 9시간 37분 (04:44 daily recycle로 기동)
읽기 3종 stats·missions·tree 전부 000 (타임아웃)
티켓.psv 79,394 B / 240행
집사회.sh "[옴] 응답 지연" — 완전 사망을 지연으로 오보고(--max-time 5)
/tmp/crowny-deacon.err:
[장부캡경고] 티켓.psv 크기=65837B > 60000B — 읽기()/문자열 65535B 캡 초과 위험
[VM] 문자열 핸들 상한(480000) 초과 — GC 후에도 476214 생존, 풀 누수 의심
근본원인 — 폴링 주기 < 요청 처리시간
대시보드가 10초 간격 자동 갱신인데 /api/council/stats 가 티켓 186행에서 8~9초,
240행에서 13~22초(초선형)였다. 주기를 넘는 순간 요청이 무한 적체 → 전 라우트 무응답 →
문자열 핸들 소진(exit43) → KeepAlive 재기동 → 즉시 재적체.
프로세스 생존·포트 LISTEN이라 ps/lsof로는 정상으로 보이는 것이 인지를 늦췄다.
계층 원인: _티켓PSV읽기() 에는 서명(size_mtime) 캐시가 있었지만 원시 행 배열까지만이고,
그 위의 _유니크최신()(id별 최신행 접기)과 통계문자열() 집계는 요청마다 전량 재계산했다.
수리
1) 장부 압축 (급한 불)
장부압축.toau(v2026-07-30 크기게이트 내장 — 60,000B 초과 시 perl 안전경로로 VM 읽기 우회,
이중 자가검증 후 원자 rename) 실행:
- 티켓.psv 79,394 B / 240행 → 57,996 B / 186행(고유ID 186)
- 미션.psv 23행 → 22행
- 작업 전
data/전체 사본 백업 확보
2) 서명 캐시를 집계 계층까지 (본 수리)
한선씨/미션장부.한선:
- 전역 추가:
_티켓목록캐시서명/_티켓목록캐시,_통계캐시서명/_통계캐시값 티켓목록()— 파일서명 동일하면_유니크최신()자체를 건너뜀통계문자열()— 티켓·미션 두 서명을 합친 키로 집계 문자열 메모이즈- 쓰기(append)는 크기·mtime을 바꾸므로 자동 무효화(기존 원시행 캐시가 쓰던 검증된 기전 재사용)
배포.sh(컴파일→심볼가드→백업→교체→kickstart→health→스모크, 실패 시 자동원복).
STRICT 경고 0, 장부검증 회귀 12/12 PASS, 재기동 스모크 [티/정상].검증 (라이브 실측)
| 항목 | 수리 전 | 수리 후 |
|---|---|---|
| /stats (5회 연속) | 8~22 s | 0.022~0.043 s |
| /tree?mission=M1 | 9.1 s | 0.61 s |
| /missions | 0.07 s | 0.04 s |
| 집사회.sh 현황 | [옴] 응답 지연 | 정상 JSON |
touch -m data/티켓.psv(내용 무변경, md5 동일)로 서명만 바꾸자
다음 요청이 8.9 s 재계산 → 값 완전 동일 → 그 다음 요청 0.027 s 캐시. 무효화·재계산·재캐시
경로가 전부 실동작함을 확인.대시보드 육안(crowny-ai-browser MCP): "서버 대기중" 배너 소멸, 자립도 5% · 미션 22 · 티켓 186 · 완료 129 · 대기 47 정상 표시. 장부 실측(awk)과 일치.
관련 파일
/Users/ef/crowny-deacon/한선씨/미션장부.한선(캐시 3계층)/Users/ef/crowny-deacon/장부압축.한선(안전경로 — 무수정, 실행만)/Users/ef/crowny-deacon/배포.sh(표준 배포)- 백업:
scratchpad/deacon-data-backup-1504/
잔여 이슈 (중요)
- 재계산 자체는 여전히 8.9초. 캐시는 "읽기 폭주"만 막는다. 쓰기(미션발행·claim·보고)가
_유니크최신/집계의 초선형 비용 —
메모리에 기록된 T44(O(R²))가 미해결로 남아 있다.
- 장부 헤드룸 부족. 압축 직후 57,996 B로 65,535 캡까지 7.5 KB뿐. 며칠이면 재발한다.
완료.psv 로 분리 아카이브해 활성 장부만 얇게 유지하는 게 정공법.
- 문자열 핸들 누수 — 부팅 후
문자열보호()+ N요청마다문자열GC()배선이 아직 없다
집사회.sh의--max-time 5는 정상화된 지금은 충분하지만, 타임아웃 문구가 "지연"과
- M22 미션은 티켓 단위 보고를 하지 않았다(타 세션 claim 충돌 방지). 필요 시 별도 처리.