二〇二六年 レンタル Mac Mini七時二十四分:Celery 常駐ワーカー vs cron 扇出(並行・ACK・退避・ディスク水位)
レンタル Mac Mini一台へCelery 常駐とcron 扇出を同居させると、prefetch・ACK・ブローカー巻と一時領域が夜間に衝突しやすい。しきい値表・URL 例・比較表・FAQで意思決定を固定する。スケジューリング稿・cron 看門犬稿・APFS 水位 FAQ。長期バッチの隔離は公開購入(ログイン不要可)で台とディスクに余白を取る。
- prefetch 気泡:高倍数で一子に偏り、CPU/ディスクが不均。
- cron 重複:flock無しは同一 APFSへ二重書き込み。
- 早期 ACK:クラッシュ後に副作用だけ残ると手戻りが大きい。
実行しきい値表
並行は物理コア基準、値は出発点。
| 設定 | 推奨の出発点 | ACK/安全メモ | Mini 観点 |
|---|---|---|---|
CELERY_BROKER_URL/RESULT_BACKEND |
vhost 分離/Redis DB をキャッシュと別 | 秘密はホスト単位ローテ | 巻分離で追記ノイズ低減 |
broker_transport_options(可視性) |
p99 の3〜6 倍 | 短=重複、長=救出遅い | GPU/ffmpeg は上帯 |
worker_prefetch_multiplier |
CPU 重い1、極小 IO 2〜4 | late ack+べき等 | 単一 SSD 頭詰まり抑制 |
task_acks_late/task_reject_on_worker_lost |
再試行可は遅延 ACK | リース等で副作用を囲う | 子再生成と併用 |
worker_max_tasks_per_child |
200〜2000(漏れなら下げる) | 冷起動 vs RSS | 夜間に再生成 |
worker_max_memory_per_child |
子 RAM 予算60〜70%(KB) | スワップ抑制 | 同居ブローカー分を残す |
task_soft_time_limit/task_time_limit |
ソフト SLA約 9 割、ハード+30〜60s | 可視性内に再試行 | GPU ハング柵 |
| 再試行バックオフ | 初回2〜5s・上限約2分・ジッタ20% | 人手無し5 回で打切 | 夜間窓と整合 |
キュー URL 例
ホスト/DB/TLS は差し替え。Git 禁止、環境変数へ。
| 役割 | 例(URL) | 使い所 |
|---|---|---|
| Redis ブローカー | redis://:PASSWORD@127.0.0.1:6379/0 |
同居・DB 番号分離 |
| Redis TLS | rediss://:PASSWORD@broker.example:6380/0?ssl_cert_reqs=required |
WAN・timeout 確認 |
| RabbitMQ | amqps://user:pass@rabbit.local:5671/celery_vhost |
優先度・連携が要るとき |
| 結果 | redis://:PASSWORD@127.0.0.1:6379/2 または rpc:// |
巨大 blob は巻に載せない |
投入前ゲート
- 隔離:ブローカー/結果/キャッシュの URL と巻を分ける。
- ACK:再試行可は late、外部コミット済みのみ early。
- prefetch:数分 CPU は 1、極小 IO のみ慎重に上げる。
- 子再生成・メモリ上限:夜間窓でネイティブ漏れを回収。
- 可視性・時間・再試行:poison は DLQ か人手まで閉じる。
- ディスク黄赤:enqueue も止める(メールだけにしない)。
並行・ACK・退避
並行は物理コアから測り、キュー深さが定常の10 倍を連続 2 回ならページ。再接続は指数バックオフ+ジッタで夜間の嵐を避け、テナント別キューで公平性を保つ。
ディスク・inode 水位チェックリスト
- 黄:空き約 20%で警告とスロットル。
- 赤:約 10%未満またはスナップショット失敗ログで enqueue 停止。
- AOF/ブローカー伸び用に2 GiB級の余白を別確保。
- ログは約 200 MiB/ファイルでローテ、inode 80%超で調査。
常駐ワーカー vs cron 扇出マトリクス
| プロファイル | Celery 常駐 | cron 扇出 |
|---|---|---|
| 長時間 | prefetch 1・late ack・時間制限 | 分割保存が要る |
| 極小シャード | キュー分割・prefetch 監視 | launchd 段階起動 |
| 重複禁止 | シングルトン/ロック | 1 plist/flock |
| 毒/不安定 API | 上限再試行・DLQ | サーキット・終了コード通知 |
安定化の六手順
- p99測定→可視性・ソフト時間に2 割ゆとり。
- URL/秘密を Git 外、複製時ローテ。
- late ack、長時間は prefetch 1、再試行上限+DLQ。
worker_max_tasks_per_childとメモリ上限、再生成は静かな窓。- tmp・結果・inode を監視、黄でプロデューサ減速。
- 四半期に強制 kill 演習で再配信安全性を確認。
FAQ
- 長時間は Celery と cron どちらか
- 枯渇と再試行の集約は常駐。短い非重複スライスはcron。
- prefetch は常に 1 か
- 長 CPU は1。極小 IO は late ack+べき等のうえで2〜4まで。
- max tasks per child の意味
- 数百〜数千で子を作り直し、断片化と FD 増を抑える。
- 可視性と時間制限
- 可視性は p99 の3〜6 倍、ソフトSLA の約 9 割、ハード+30〜60 秒。
- cron が有利なとき
- 短時間・flock で重複禁止。継続枯渇は Celery。
引用ゲート:長 CPU は prefetch 1+late ack、max tasks per child 200〜2000、空き黄 20%/赤 10%で投入停止。
まとめ:レンタル Mac Miniで長期バッチを回すなら、表のURL・prefetch・ACK・子再生成・水位を先に固定し、常駐か扇出かを負荷形に合わせる。公開購入でコアとディスクに余白を取り、本番と検証を分けてください。