資源上限
最後更新
每次執行函式時,HakoRun 從 CPU、記憶體、請求大小與時間四個面向設限。
上限一覽
| 上限 | 預設 | 設定 | 超過時 | 平台 |
|---|---|---|---|---|
| CPU | 1 核(CPUQuota=100%) |
MAX_CPUS |
被 cgroup 節流 | Linux |
| 記憶體 | 128M,swap 0 |
MAX_MEMORY |
被 cgroup OOM 終止 | Linux |
| 請求 body | 256 KiB | CODE_MAX_SIZE |
HTTP 400 | 全部 |
| 執行時間 | 30 秒 + 5 秒 | TIMEOUT_SCRIPT |
終止行程;非串流回 500,串流送 error |
全部 |
systemd Slice
啟動時 sandbox.NewSlice() 寫入 ~/.config/systemd/user/hakorun.slice,再執行 systemctl --user daemon-reload 與 start:
[Unit]
Description=FaaS Sandbox
[Slice]
CPUQuota=100%
MemoryMax=128M
MemorySwapMax=0
每個沙箱行程以 systemd-run --scope --slice=hakorun.slice 加入此 slice,因此上限是所有同時執行的函式共用,不是每個函式各自一份。建立 slice 失敗只記錄警告,服務仍會啟動,此時沒有 CPU/記憶體上限。
時間與大小
- 逾時:
TIMEOUT_SCRIPT秒數加 5 秒緩衝作為 context 截止時間;串流模式在客戶端斷線時也會立即終止行程。 - 請求大小:
http.MaxBytesReader套用在/run與/run-now的 body;/upload不受此限。