메모리가 부족하면 시스템을 다시 시작하시겠습니까?

메모리가 부족하면 시스템을 다시 시작하시겠습니까?

SSH를 통해 원격 컴퓨터에서 메모리 사용량이 많은 테스트를 실행해야 합니다. 지난번에 이 작업을 수행했을 때 컴퓨터가 응답을 멈췄으며 누군가 물리적으로 재부팅해야 했습니다.

너무 많은 메모리를 사용하는 경우 시스템이 정지되지 않고 다시 시작되도록 설정할 수 있는 방법이 있습니까? (루트 액세스 권한이 있습니다). 커널 버전은 4.9.0입니다.

답변1

"불안정한"/스타버 서버의 제어를 모니터링/복구하려면 하드웨어를 사용하거나 소프트웨어 감시 장치를 실패시키는 것이 좋습니다. 데비안에서는 다음을 사용하여 설치할 수 있습니다:

sudo apt-get install watchdog

/etc/watchdog.conf그런 다음 임계값이나 테스트를 편집 하고 추가합니다. 내 머리 꼭대기에서 워치독도 활성화되어 커널이 재부팅하는 동안 한동안 이를 볼 수 없게 됩니다. 예를 들어 소프트웨어 루틴이 고정된 시간에 /dev/watchdog0또는 유사한 것과 통신하지 않는 경우.

예를 들어 다음에서 로드 임계값을 정의할 수 있습니다 /etc/watchdog.conf.

max-load-1             = 40
max-load-5             = 18
max-load-15            = 12

또한 일부 보드/칩셋에는 감시 기능이 내장되어 있다는 점에 유의하세요. 내가 틀리지 않았다면 Arm A20도 그중 하나입니다.

에서남자 감시견

심각한 문제가 감지되면 Linux 커널이 시스템을 재설정할 수 있습니다. 이는 특수 감시 하드웨어를 통해 구현되거나 커널 내부의 신뢰성이 약간 떨어지는 소프트웨어 전용 감시를 통해 구현될 수 있습니다. 어느 쪽이든 커널에 시스템이 제대로 작동하고 있음을 알려주는 데몬이 필요합니다. 데몬이 해당 작업을 중지하면 시스템이 재설정됩니다.

워치독은 그런 데몬입니다. /dev/watchdog을 열고 커널이 재설정되지 않도록 최소한 1분에 한 번씩 여기에 계속해서 기록합니다. 각 쓰기는 재부팅 시간을 1분씩 지연시킵니다. 잠시 동안 활동이 없으면 워치독 하드웨어가 재설정됩니다. 소프트웨어 워치독의 경우 재부팅 기능은 머신 상태와 인터럽트에 따라 달라집니다.

CONFIG_WATCHDOG_NOWAYOUT 옵션이 활성화된 상태로 커널이 컴파일되지 않는 한, /dev/watchdog 장치가 올바르게 닫혀 있으면 재부팅 없이 감시 데몬을 중지할 수 있습니다.

또한보십시오Raspberry Pi 및 Arduino: WatchDog 타이머를 사용하여 안정적인 시스템 구축

답변2

특정 질문에 답하려면 다음과 같이 sysctls를 설정할 수 있습니다.

vm.panic_on_oom=1
kernel.panic=10

시스템에 메모리가 부족하면 커널에 패닉이 발생하고 패닉이 발생한 후 10초 후에 재부팅됩니다.

cgroups2를 완벽하게 지원하는 새로운 시스템에서는 systemd-oomd가 덜 과감한 옵션일 수 있습니다.

관련 정보