메모리가 부족하면 시스템을 다시 시작해야 합니까?

메모리가 부족하면 시스템을 다시 시작해야 합니까?

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분씩 지연시킵니다. 1분 동안 활동이 없으면 감시 하드웨어가 재설정됩니다. 소프트웨어 감시의 경우 재시작 기능은 시스템 상태와 인터럽트에 따라 달라집니다.

/dev/watchdog 장치가 제대로 닫혀 있으면 CONFIG_WATCHDOG_NOWAYOUT 옵션을 활성화하여 커널을 컴파일하지 않는 한 재부팅하지 않고도 watchdog 데몬을 중지할 수 있습니다.

당신은 또한 볼 수 있습니다Raspberry Pi 및 Arduino: 감시 타이머를 사용하여 안정적인 시스템 구축

답변2

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

vm.panic_on_oom=1
kernel.panic=10

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

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

관련 정보