AI / 자동화 2026년 4월 22일

2026년 launchd 아래 렌탈 Mac mini에서의 OpenClaw ulimit, 메모리, CPU 가드레일

ProxyMac 엔지니어링 팀 2026년 4월 22일 약 12분 읽기

OpenClawHK·JP·KR·SG·USProxyMac Mac mini M4에서 상주 메모리launchd가 안전하다고 본 선을 넘으면 조용히 죽습니다: UI에는 «실행 중»이지만 프로브 간격보다 커널이 페이지를 내쫓는 속도가 빠르면 채널 어댑터가 일을 받지 않습니다. 운영자는 무인 작업의 기본 ulimit -n 256이나 MCP 설정에 나온 MCP 자식 포크 폭풍을 모델 탓으로 돌립니다. 이 2026 가이드는 조용한 OOM 징후, 셸 대 LaunchAgent ulimit 대비, (RAM 70% 여유, 1만 열린 파일, 시간당 2 GB 스왑인) 세 가지 수치 텔레메트리 임계, SoftResourceLimits복붙 plist 조각, 그리고 병렬 에이전트 동시성헬스 프로브와의 연결을 정리해 사용자가 눈치채기 전에 알리게 합니다.

배포 문제 해결로 로그 분류를, 도움말 센터로 런북을 짝지으세요. 한도가 아키텍처 한계일 때는 오타가 아니라 요금으로 하드웨어를 올리세요.

모델 탓하기 전에 로그해야 할 조용한 OOM·한도 신호

macOS 통합 로깅은 jetsam 이벤트를 정보 레벨 잡음 아래에 묻습니다. CPU가 40% 미만인데 도구 지연 p95가 4배 이상 튀면 느린 LLM이 아니라 메모리 압박입니다. 동시 에이전트 급증 시 MCP stdio 브리지에서 ENOTFILE 또는 Too many open files도 단서입니다.

  • 압축기 스왑인: 16 GB mini에서 시간당 500 MB 초과면 이미 편한 여유를 지났습니다.
  • LaunchAgent throttleReasonresource-limits가 보이면 plist 버전을 Git에 남기세요.
  • 워커 자식이 못 뜨는 로컬 HTTP 게이트웨이의 허위 502—종종 RLIMIT_NPROC입니다.

launchd 대 대화형 셸: 다른 ulimit 세계

SSH 세션은 ~/.zprofile에서 ulimit -n 65535를 돌릴 수 있습니다. LaunchAgent는 복제하지 않으면 그렇지 않습니다. 노트북 셸이 아니라 plist가 호출하는 같은 래퍼 스크립트 안에서 한도를 출력하세요.

컨텍스트전형적 maxfiles설정 주체위험
SSH 로그인10240+셸 rclaunchd 디버깅을 속임
LaunchAgent 기본256–1024OS 기본MCP 버스트에 금방 고갈
plist SoftResourceLimits 이후8192–65535운영 팀코드의 FD 위생과 맞춰야 함

온콜을 깨울 만한 텔레메트리 임계

기존 헬스 프로브 스크립트에 매분 여유 페이지, 파일 디스크립터 수, 압축기 페이지 세 숫자를 syslog에 붙이세요. 연속 두 샘플이 아래를 넘으면 페이징합니다.

규칙 묶음: 16 GB SKU에서 여유 RAM 2.5 GB 미만, 열린 FD 8000 초과, 또는 압축기 페이지 120000 초과—24 GB 머신에는 비례해 조정하세요.

Plist 조각: launchd를 포크 폭탄으로 만들지 않는 SoftResourceLimits

키는 에이전트 딕셔너리 아래에 넣습니다—전역 도메인이 아닙니다. 하드 한도는 소프트의 1.25배 이하로 두어 잘못된 설정이 멈추기보다 빨리 실패하게 하세요.

<key>SoftResourceLimits</key> <dict> <key>NumberOfFiles</key><integer>8192</integer> <key>NumberOfProcesses</key><integer>512</integer> <key>Stack</key><integer>8388608</integer> </dict>

두 번째 SSH 세션이 있을 때만 launchctl kickstart -k gui/$(id -u)/com.example.openclaw로 다시 띄우세요—게이트웨이 재시작 복구에서의 규율을 재사용합니다.

동시성 가이드의 병렬 에이전트마다 모델 핸들과 MCP 소켓이 중복됩니다. 실험에서 동시성을 두 배로 하면 RSS가 3.2 GB 늘었다면 «혹시 몰라» NumberOfFiles까지 두 배로 올리지 마세요—누수를 가립니다. 대신 RSS가 macOS 기본 서비스 이후 물리 RAM의 70%에 들어가도록 동시성을 캡하세요.

비밀 참고: OpenClaw에 RLIMIT_MEMLOCK을 올리는 일은 드뭅니다. mmap 캐시 대신 비밀 강화의 키체인 백 비밀을 쓰세요.

FAQ

더 높은 한도를 위해 root로 OpenClaw를 돌려야 하나요? 아니요—plist 한도를 고치세요. root는 피해 반경을 넓힙니다.

Activity Monitor만으로 충분한가요? 스팟 체크에는 예이나, 자동화된 memory_pressure 로그가 야간 퇴행을 잡습니다.

Docker 사이드카는? 컨테이너를 같이 두면 먼저 RSS를 70% 예산에서 빼세요.

리소스 집약 OpenClaw에 여전히 맞는 Apple Silicon Mac mini

M4 통합 메모리는 값싼 x86 VM에서 흔한 PCIe NUMA 깜짝 없이 가중치와 macOS 서비스가 대역폭을 나눕니다. 요금으로 리전별 렌탈을 하면 더 높은 한도가 필요한 24 GB SKU로 재무를 맞출 수 있고, 네이티브 launchd 통합은 Mac 친화를 가장하는 Linux 컨테이너 속 systemd보다 낫습니다. GitOps에 따라 Git 커밋 옆에 plist 버전을 적고, 온보딩에 이 가이드를 링크하고, 워크로드가 끝나면 mini를 회수하세요—금속이 예측 가능할 때 한도가 쉬워집니다.

OpenClaw 하드웨어를 적정 크기로

HK / JP / KR / SG / US · 여유 있는 자동화용 Mac mini