← 목록
기타 2026-06-10 3KB 읽기 3분

크라우니 자원관제(sysguard) — 시스템 자원 폭주 진단·정리 관리도구 (2026-06-10)

개요

fileproviderd 220% 사건에 이어 crownyc run 관리서버.toau33개 중복 폭주(각 20% CPU = ~660% 낭비) 발견. 진단·해결 과정을 재사용 가능한 한선씨 관리도구로 격상·구현·영속화.

발견한 폭주 (census 1회로 적발)

대상개수원인
관리서버.toau (aimed :9905)33bind 실패 시 종료 안 하고 busy-spin + 중복 워치독
crowny-dex.toau5동일 bind-spin + finance 워치독 2중
aimed 워치독.sh loop2LaunchAgent + 수동 nohup 중복
finance watchdog.sh2중복 기동

근본 원인 (공통 패턴)

  1. 한선씨 서버 bind 미검사: 변수 서버 = TCP대기(포트) 반환값 무검사 → 포트 점유 시 무효 소켓.
동안(1==1){ 클라=TCP수락(서버); 만약(클라>=0){..} } 가 블록 없이 즉시 -1 반복 = busy-spin, 종료 코드 없어 좀비 누적. (정상 서버는 accept가 블록되어 0% CPU. 그래서 폭주분만 20%+.)
  1. 중복 워치독: 같은 서버를 동시 재생성 → 좀비 가속.

수정 (근본)

  • crowny-aimed/관리서버.한선: 만약(서버<0){출력+종료} + accept 연속실패 300회 시 종료(소켓 무효 안전망). → 중복 인스턴스 즉시 종료 검증(2개 띄워 1개만 생존).
  • crowny-aimed/워치독.sh: 경로 기준 단일 인스턴스 가드(pgrep -f "$SCRIPT loop").
  • 즉시정리: 관리서버 33→1, dex 5→1, 중복워치독 정리.

관리도구 (신규 — /Users/ef/crowny-sysguard/)

  • 자원관제.한선 (도구 본체, 한선씨): 수집(ps/lsof)→4상 판정→리포트. 판정·의사결정은 한선씨.
  • 4상: 티=정상 / 옴=관찰 / 타=즉시조치 / 음=측정불가. 종합 위험점수.
  • 점검: 중복 .toau 종류·좀비수·중복워치독 / fileproviderd·filecoordinationd·opendirectoryd CPU / iCloud 데스크탑 node_modules.
  • VM 함정 회피: 파일존재(항상 -1 버그)·포함(pos0 버그) 미사용 — 읽기+글자수 가드, 부분 비교.
  • 정리.sh (안전 액션): 중복 워치독/인스턴스를 1개만 남기고 종료. 절대 전멸 안 함(LISTEN 보유분 또는 최古 PID 보존). 합성 중복 3→1 테스트 통과.
  • 관제 (런처): 컴파일+실행 글루. ./관제(진단) / ./관제 정리(진단+정리).
  • org.crowny.sysguard.plist (LaunchAgent): 5분 주기 자동 진단+안전정리, 로그 /tmp/sg/관제.log.
  • 사용

    bashcd /Users/ef/crowny-sysguard && ./관제        # 진단
    ./관제 정리                                    # 진단 + 자동정리
    

    잔여 이슈 (사용자 조치)

    • filecoordinationd 100~149% 지속 — 데스크탑 잔존 node_modules 58개(iCloud 동기화)가 파일 coordination 유발 추정.
    → ① sudo killall filecoordinationd 1회 ② 시스템 설정 > iCloud > "데스크탑·문서 폴더" 끄기(근본).
    • crowny-dex.toau 자체 크래시-루프 의심(finance 워치독이 복구 중) — dex 서버에도 관리서버와 같은 bind-exit 수정 필요(후속).
    • 워치독 단일가드는 pgrep 기반이라 동시기동 레이스에 약함 — 원자적 mkdir 락으로 고도화 권장(후속).
    • 다른 크라우니 한선씨 서버 전반에 같은 bind-미검사 패턴 잔존 가능 → 서버 템플릿 일괄 수정이 진짜 근본(후속 워크플로우).