SSR · CI/CD · 遠端 Mac · Next.js · Nuxt
2026 年前端 SSR 建置避坑:
遠端 Mac 上 Next.js 與 Nuxt 的 Node 記憶體與建置併發對照表
2026.03.26
前端/全端工程
約 9 分鐘閱讀
目標人群:於 遠端 Mac 交付 Next.js/Nuxt SSR 的前端與全端,以及接入 CI/CD 的團隊。核心關鍵詞:遠端 Mac、Next.js、Nuxt、Node 記憶體、建置併發。本文給出可寫進 YAML 的可執行參數與併發上限及對照表。延伸:Monorepo 遠端快取、Node 多專案隔離、遠端建置與 Safari 驗證。💻🚀
強意圖:流水線門禁、節點效能、可複製參數
01 記憶體上限與 OOM 觸發閾值
SSR 建置尖峰常在壓縮、預渲染或 Nitro 打包;日誌常見 heap out of memory、碼 134 或 137。閾值:單次建置 RSS 逾該 Job 預留記憶體約 70% 即危險帶。寫法:同一 shell 匯出 NODE_OPTIONS="--max-old-space-size=8192"(16GB 可先 6144);CI 與 SSH 須一致。Next 可加 NEXT_TELEMETRY_DISABLED=1。
- 筆電過、遠端掛:先對 NODE_OPTIONS 與是否雙重型建置。
- 單 Job 獨佔節點時再拉高堆積;壓力變黃先降併行。
02 併發 worker 與 CPU 關係表
核心多不代表可無限加 worker:盲目加大反易 OOM;Turborepo --concurrency 須限流。
| 效能核規模(典型 M 系列) | 單機安全併行 SSR 建置數 | 單次建置建議 --max-old-space-size(MB) |
備註 |
|---|---|---|---|
| 4 核 | 1 | 6144–8192 | 為 sshd 留量;勿同視窗跑 E2E 全量。 |
| 8 核 | 1(大型)/2(中小型) | 每任務 4096–6144 | 大型路由/重 i18n 維持單佇列。 |
| 10 核及以上 | 2 | 每任務 4096–8192 | 壓力變黃先減併行再加堆積。 |
可選 UV_THREADPOOL_SIZE≤效能核;測試另限 --maxWorkers。
03 快取目錄與清理策略
陳舊快取易「本機綠、CI 紅」。區分刪產物與定期修剪,勿誤刪有效 store。
- Next:
.next/、.next/cache;重置刪整個.next。 - Nuxt 3:
.nuxt、.output、node_modules/.cache;改 Nitro 後刪.nuxt+.output。 - pnpm:
pnpm store prune。例行:df -h門禁+清過期輸出。
04 遠端節點穩定性 FAQ
筆電過、遠端 OOM? 對 NODE_OPTIONS;勿疊第二套 SSR。
worker 拉滿更快? 取核數約 50%–100% 並獨佔視窗,否則降併發。
磁碟滿? Next 寫 cache 失敗;Nuxt/Vite 快取易壞——清框架產物後重裝。
x64 Node? Apple Silicon 優先 arm64。
05 Next.js/Nuxt 對照表與落地清單
下表可貼 wiki,與 CPU 表併用。
| 維度 | Next.js(App Router SSR) | Nuxt 3(Vite+Nitro) |
|---|---|---|
| 主記憶體槓桿 | NODE_OPTIONS 包裹 next build |
同包裹 nuxt build;Nitro 尖峰 |
| 典型快取路徑 | .next/、.next/cache |
.nuxt/、.output/、node_modules/.cache |
| 併行策略 | 矩陣分階段;單視窗一大建置 | 限併行;升級 Vite/Nitro 時 bust |
| CI 冒煙訊號 | 預渲染階段堆積錯誤 | Nitro rollup 階段 OOM |
落地步驟(五項):
- shell 統一 NODE_OPTIONS、(Next)NEXT_TELEMETRY_DISABLED。
- 預設單階段一個重型 SSR,除非 RSS 允許併行。
- 腳本控刪 .next/.nuxt/.output,寫 runbook。
- 開頭記錄
uname -m、process.arch、可用記憶體。 --concurrency對齊 CPU 表;磁碟告警聯動清理。
可引用資訊
- 單任務 RSS 逾預留記憶體約 70% 即高危帶。
- 4 效能核機型建議單次堆積 6144–8192MB 且併行 SSR 為 1。
- Apple Silicon 上 arm64 Node 為預設推薦以降低記憶體與耗時。