AI 자동화 2026년 4월 29일

2026 OpenClaw Gateway launchd 크래시 루프: 스로틀, KeepAlive, MacLogin Apple 실리콘용 워치독 복구

MacLogin AI 자동화 팀 2026년 4월 29일 약 20분

OpenClaw Gateway가 플러그인 로드나 모델 협상 중에 죽으면 launchd는 성실히 다시 띄운다—때로는 LLM 벤더가 또 HTTP 200을 줄 때보다 빠르게. 2026년 4월 MacLogin 호스트 Apple 실리콘(홍콩·도쿄·서울·싱가포르·미국)에 대한 답은 재시작 간격을 제어 평면으로 취급하고, 명시적 스로틀을 넣으며, SuccessfulExit 의미를 문서화하고, 단일 curl이 아니라 겹친 프로브로 복구를 증명하는 것이다. 본문은 크래시 신호를 달러로 맵하고 노브 표를 주고 plist 구조를 풀고 9단계 롤아웃을 열거하며 재시작 폭풍과 API 할당을 수치 시나리오로 추정하고 관측 신호를 나열하고 기존 컷오버 안내로 포인터를 주고 FAQ로 닫으며 상시 에이전트에 Mac mini M4 밀도가 맞는 이유로 끝낸다.

교차 읽기 프로덕션 컷오버 헬스 체크, launchd kickstart 리로드, localhost 바인딩 강화. 구매 앵커는 요금, 운영 문서는 도움말, 화면 경로는 VNC.

크래시 신호, 영향 범위, 순진한 재시작이 해를 끼치는 이유

2026년 4월 인시던트 채널을 지배하는 세 증상: (1) 유지보수 작업 후 코드 0으로 종료—plist가 임의 종료를 실패로 표시해 launchd가 재시작한다. (2) 가져오기 중 처리되지 않은 플러그인 예외로 CPU가 수십 초간 100%에 붙어 워치독 킬이 하드웨어 결함처럼 보인다. (3) 원격 모델 엔드포인트가 HTTP 429를 반환하는데 launchd가 즉시 재시작해 스로틀을 API 지갑 거부 공격으로 증폭한다.

경고: KeepAlive를 통째로 꺼 ‘소음을 멈춘다’면 죽은 게이트웨이와 행복한 침묵 모니터링만 남는다—env=sandbox 태그 랩 호스트에서만 하라.

launchd 노브 표(의도·트레이드오프·시작값)

의도트레이드오프시작값
ThrottleInterval재시작 폭풍 상한실제 크래시 후 복구가 느림프로덕션 30초 / 랩 10
KeepAlive/Crashed비정상 종료 시 재시작근본 버그를 가릴 수 있음true, 상한 있는 재시도
SuccessfulExit0 종료를 건강으로 본다정직한 종료 코드 필요게이트웨이가 의미를 지킬 때까지 false
ProcessType대화형 vs 백그라운드스케줄링 우선순위에 영향헤드리스는 Background
SoftResourceLimits파일 디스크립터 상한스킬이 굶주릴 수 있음무거운 워처에 4096까지 상향
수치 가드레일: 단일 게이트웨이 테넌트는 RAM 최소 8 GB, cron·웹훅·대화 세션 공유 시 16 GB. Node 22와 모델 캐시가 작은 슬라이스를 빨리 소모한다.

plist 형태: ProgramArguments, WorkingDirectory, EnvironmentVariables

자주 보는 실패는 ‘OpenClaw 고장’이 아니라 경로 드리프트: plist는 /usr/local/bin을 가리키는데 Apple 실리콘 Homebrew는 /opt/homebrew/bin으로 옮겼다. node와 게이트웨이 엔트리의 전체 경로를 인코딩한다. LaunchAgent는 빈 home을 물려받으므로 HOME을 명시한다. WorkingDirectory는 ~/.openclaw가 있는 워크스페이스와 맞춰 HK·US 클론에서 상대 스킬 경로가 일관되게 한다.

9단계 롤아웃(SSH 우선·헤드리스 안전)

  1. 기준선 캡처: launchctl print gui/$(id -u)/com.openclaw.gateway(라벨 치환)와 openclaw doctor JSON을 아카이브.
  2. 설정 동결: 20분간 npm 업그레이드 금지, 두 번째 터미널에서 plist 편집 금지.
  3. ThrottleInterval 선적용: 한 번 reload 후 log show --predicate 'eventMessage CONTAINS "com.openclaw"' --last 15m로 재시작 간격이 설정 초 이상으로 벌어졌는지 확인.
  4. SuccessfulExit 토글: 실제 실패에서 비영 반환을 검증한 뒤에만. 도쿄 프로덕션을 오염시키지 않으려 싱가포르 스테이징을 쓴다.
  5. 헬스 curl 다섯 번: 각 재시작 후 127.0.0.1:18789200 ms 간격으로 다섯 번. 모델 허용 목록 수정 안내와 맞춘다.
  6. 단일 PID 검증: 리스너를 120초 소유하는 PID가 하나인지. 둘이면 좀비 LaunchAgent 중복을 본다.
  7. 메트릭 활성화: 재시작 카운터, 마지막 종료 코드, 업스트림 지연 히스토그램을 TSDB로—60초마다 JSON을 긁어도 맹목 페이징보다 낫다.
  8. 롤백 문서화: git에 plist와 티켓 참조, 한 줄 복원용 이전 plist 체크섬 포함.
  9. 커뮤니케이션: 채팅 운영에 웹훅 디스패처가 안정화 구간에서 속도 제한 백오프를 따르라고 알린다.

재시작 폭풍 vs 업스트림 API 예산(수치 시나리오)

게이트웨이가 콜드 스타트마다 LLM을 호출하고 호출당 $0.004라 가정. 스로틀 없이 분당 6회 재시작이면 호스트당 시간당 약 $0.864—서울 계약자 호스트 22대를 곱하면 작지 않다. ThrottleInterval을 30초로 올리면 콜드 스타트는 시간당 최대 120으로 캡되고, 더 나은 속도 제한 행동 전에도 호스트당 시간당 약 $0.52 절감 추정이 된다.

패턴10분당 재시작LLM HTTP 혼합유력 진단
화이트너클 플랩> 40401/403 스파이크plist 미 reload 자격 로테이션
썬더링 허드1824429 다수ThrottleInterval 과소·공유 API 키
클린 바운스12200 안정계획 유지보수 또는 설정 reload
좀비 리스너재시작 0이나 클라이언트 정체n/a오래된 소켓, 중복 에이전트

‘플래피 그린’ 게이트웨이를 잡는 관측 신호

  • UNIX 에포크 갭: 게이트웨이 ready부터 첫 성공 모델 호출까지 > 8초면 플러그인 정체 의심.
  • 파일 디스크립터 수: 재시작을 넘어 상승하면 크래시 루프로 위장한 디스크립터 누수.
  • launchd 스로틀 메시지: 통합 로그에 있으면 제어 평면이 일한다. 없으면 plist에 키가 안 실렸다.

헬스는 통과하는데 웹훅이 실패하면 TLS 신뢽, 중복 제거 스토어, 게이트웨이 HTTP는 독립 표면이다. 웹훅 중복 제거JSONL 로그 로테이션을 plist 조정과 같은 유지보수 창에 맞춰 포렌식 데이터를 살린다.

자주 묻는 질문

MacLogin이 plist를 패치하나요? 아니요. LaunchAgent 내용은 고객 소유입니다. Mac과 네트워크 경로는 도움말에 있습니다.

게이트웨이를 root로 실행해야 하나요? 피하세요. 최소 권한 LaunchAgent가 스킬 오작동 시 영향 범위를 줄입니다.

어디서 안전하게 테스트하나요? 도쿄 프로덕션을 건드리기 전 요금으로 격리 mini를 띄우세요.

워치독 조정 후에도 상시 OpenClaw에 Mac mini M4가 맞는 이유

M4 효율은 Node·ffmpeg 헬퍼·Xcode 인덱싱이 충돌할 때 구형 Intel mini가 전원 레일을 포화시키던 패턴을 재현하기 어렵게 한다. 통합 메모리로 모델 캐시와 로그 버퍼가 공존해 PCIe SSD 스래시를 일으키지 않아 30초 스로틀 창은 디스크가 아니라 네트워크 지연이 지배한다. 도시별 임대로 US 카나리아에 공격적 스로틀을 올리고 APAC 프로덕션은 보수적으로 두며 72시간 메트릭이 평탄한 뒤에만 검증된 plist 차분을 복제한다.

게이트웨이가 랩에서 수익 크리티컬로 올라갈 때 한 열폐로 에이전트 일곱을 쌓기보다 MacLogin 리전으로 용량을 더한다. 24/7 자동화에 Mac Pro 타워를 공동 로케이션으로 끌고 오는 것보다 와트당 경제성은 여전히 Apple 실리콘이 낫다.

전용 Apple 실리콘에서 OpenClaw에 안전하게 실패 여지를 준다

HK·JP·KR·SG·US에서 SSH 우선 워크플로와 문서화된 롤백으로 게이트웨이를 배포한다.