Mac Mini M4 병렬 클러스터에서 공유 볼륨SQLite WAL은 체크포인트가 동시 빌드와 디스크 대역을 나눠 씁니다. IO 지터빌드 락·큐 상한·디스크 수위를 한 표로 묶지 않으면 잡기 어렵습니다.

공유 볼륨·WAL·병렬 빌드가 겹칠 때

슬러그: 2026-clustervps-macmini-sqlite-wal-shared-volume-matrix.html. NFS/SMB 위 단일 *.db에 다중 Mac 쓰기는 잠금·캐시 때문에 지연이 흔합니다. DB 파일당 단일 작성자, 빌드 산출물은 로컬 SSD·승격만 공유가 안전합니다. Nomad·빌드 락, rsync·디스크, Watchman·IO, Mosh vs SSH, 블로그 홈.

  • 체크포인트 버스트: wal_autocheckpoint 기본값이면 WAL을 메인 DB로 밀어 넣는 순간 링크·컴파일과 IO가 겹칩니다.
  • 가짜 병렬: max_parallel만으로 동일 DB에 두 쓰기자를 붙이면 database is locked·타임아웃이 납니다.
  • 수위 맹목: *.wal/*.shm·캐시가 겹치면 1TB에서 여유가 빠르게 사라집니다.

의사결정 매트릭스: 볼륨 × WAL × 빌드 락 × 큐

시나리오 공유 볼륨·SQLite 빌드 락·승격 큐·동시성 힌트
CI 메타 DB 공유 journal_mode=WAL, 작은 DB·VACUUM 윈도우. 메타는 flock, 컴파일은 로컬. DB 쓰기자 1·Mac당 컴파일 2–3(16GB) / 3–4(24GB+)부터 스트레스.
캐시 인덱스 로컬 복제 우선, 공유는 읽기 스냅샷. 인덱스 job과 promote 시간 분리. 큐 깊이 ≤5, 체크포인트와 겹침 금지.
리전 지연 큼 synchronous=FULL·busy_timeout↑, DB는 리전 내 볼륨. 원격 볼륨 직링크 금지, rsync 후 로컬 링크. 크로스 리전 빌드 1채널 또는 릴레이 전용 큐.

출발점일 뿐입니다. p95 빌드·수동 wal_checkpoint 정지 시간·디스크 곡선으로 조율하세요.

실행 가능한 PRAGMA·journal_mode 권장

연결 직후 1회. 공유 볼륨이 불안정하면 synchronous를 올리고 빌드 병렬을 줄이세요.

-- 연결 후 1회(예: sqlite3 /path/to/meta.db)
PRAGMA journal_mode=WAL;
PRAGMA synchronous=NORMAL;  -- 신뢰도 필요 시 FULL
PRAGMA wal_autocheckpoint=1000;  -- 페이지 단위; 빌드 피크엔 500~2000 사이에서 조율
PRAGMA busy_timeout=8000;        -- ms; 락 경합 시 재시도
PRAGMA foreign_keys=ON;
PRAGMA temp_store=FILE;          -- 대용량 정렬 시 메모리 압박 완화(경로는 로컬 디스크 권장)

주의: journal_mode=WAL 전환은 락이 걸리니 피크와 분리하세요. 배포 후 PRAGMA journal_mode;로 확인. 단일 작성자엔 DELETE A/B도 검토.

큐 동시성 상한(운영 가이드)

공유 DB 쓰기자는 1. 16GB Mac: 무거운 동시 빌드 기본 2(스왑 보이면 1). 24GB+: 3–4 시험. WAL·DerivedData·rsync가 같은 디스크면 그중 최소가 상한. max_parallel은 DB 일관성을 보장하지 않으니 메타 쓰기는 flock·단일 promote와 짝지으세요.

1TB / 2TB 디스크 수위 검수 체크리스트

볼륨 사용률(APFS) 1TB 플랜 조치 2TB 플랜 조치 큐·WAL 연동
< 70% 정상 운영, 주간 WAL 크기·*.wal 상한 모니터링. 병렬 빌드·체크포인트 여유 확보. 기본 큐 상한 유지, 스로틀 알람만.
70% – 80% 노란 경보: 아카이브·캐시 정리, 공유 DB 밤 VACUUM 검토. WAL 파일 주기적 truncate·수동 checkpoint 윈도우 지정. 동시 빌드 1단계 감축, 체크포인트와 겹치는 job 이동.
80% – 90% 2TB 승격 또는 콜드 데이터 외부 이전 우선. 신규 rsync·대형 아티팩트 job 일시 중단. wal_autocheckpoint 하향·직렬 큐로 전환.
> 90% 하드 스톱: 신규 쓰기·대형 빌드 중단, 스냅샷·캐시 해제 후 수동 checkpoint·여유 확인까지 재개 금지. 전 큐 drain, DB는 읽기 전용 failover만 허용.

검수: *.wal/*.shm 추이·p95 빌드·busy_timeout·락 경합·노드별 최저 여유. 알람은 최악 노드 기준.

자주 묻는 질문

DELETE가 나을 때? 단일 작성자·짧은 트랜잭션·높은 NFS 지연에서 체크포인트 지터가 크면. 전환 전 백업·드라이런.

수동 checkpoint? 한가할 때 wal_checkpoint(PASSIVE)부터. TRUNCATE는 정지가 있으니 빌드와 분리.

Postgres? 지연·연결·운영 비용이 달라집니다. 다중 클라이언트 단일 파일 쓰기는 여전히 피하세요.

엔지니어링 실무 참고용입니다. SQLite·macOS·네트워크 스택 조합은 환경마다 다릅니다. PRAGMA·큐 상한은 계약 SLA가 아닌 튜닝 출발점이며, 삭제형 rsync·볼륨 마이그레이션 전에는 반드시 드라이런하세요.
Mac mini M4 병렬·로그인 없이 둘러보기

플랜을 맞추고 운영 체크리스트를 함께 정리하기

용량·리전을 바꾸기 전 요금제를 팀과 맞추고, 이슈는 도움말로 모아 두면 온콜이 빨라집니다.

구매·클러스터 구성(로그인 불필요) 요금제·사양 비교

도움말 · 블로그 목록