Systemd
systemd 記憶體限制不起作用/範例
當記憶體使用量達到某個值時,我正在嘗試使用systemd 基礎架構來終止我的記憶體洩漏服務。使用的配置文件是這樣的:
[Unit] Description="Start memory gobbler" After=network.target MemoryAccounting=true MemoryHigh=1024K MemoryMax=4096K [Service] ExecStart=/data/memgoble 8388600
systemd
版本是 237。但是,無論我在MemoryMax
核心中設置什麼,都會自行終止程序,通常是當它的記憶體消耗幾乎達到整個物理 RAM 時。我在沒有交換的嵌入式系統上執行它。有人在配置中看到明顯的錯誤嗎?也許我還缺少其他一些設置。
您在錯誤的部分中有配置參數。
如果您查看日誌,您應該會看到:
Unknown lvalue 'MemoryAccounting' in section 'Unit' Unknown lvalue 'MemoryHigh' in section 'Unit' Unknown lvalue 'MemoryMax' in section 'Unit'
https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
資源控製配置選項在
$$ Slice $$,$$ Scope $$,$$ Service $$,$$ Socket $$,$$ Mount $$, 或者$$ Swap $$部分,具體取決於單元類型。
因此你想要:
[Unit] Description="Start memory gobbler" After=network.target [Service] ExecStart=/data/memgoble 8388600 MemoryAccounting=true MemoryHigh=1024K MemoryMax=4096K