나는 사용하려고시스템 인프라메모리 사용량이 특정 값에 도달하면 메모리 누수 서비스를 종료합니다. 사용된 구성 파일은 다음과 같습니다.
[Unit]
Description="Start memory gobbler"
After=network.target
MemoryAccounting=true
MemoryHigh=1024K
MemoryMax=4096K
[Service]
ExecStart=/data/memgoble 8388600
systemd
버전은 237입니다. 그러나 MemoryMax
커널에 무엇을 설정했든 일반적으로 커널은 메모리 소비가 거의 전체 물리적 RAM에 도달하면 자체적으로 프로세스를 종료합니다. 저는 이것을 스왑 없이 임베디드 시스템에서 실행하고 있습니다.
구성에서 명백한 오류를 발견한 사람이 있습니까? 어쩌면 다른 설정이 누락되었을 수도 있습니다.
답변1
구성 매개변수가 잘못된 섹션에 있습니다.
로그를 보면 다음이 표시됩니다.
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