
내 서버 중 하나가 완전히 응답하지 않습니다.
top - 06:16:53 up 2:14, 1 user, load average: 30.95, 29.96, 22.92
Tasks: 168 total, 2 running, 166 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 12.6 sy, 0.0 ni, 0.0 id, 86.4 wa, 0.0 hi, 0.0 si, 1.1 st
KiB Mem : 1014524 total, 61368 free, 877028 used, 76128 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 4196 avail Mem
scroll coordinates: y = 1/168 (tasks), x = 1/12 (fields)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30 root 20 0 0 0 0 S 11.1 0.0 4:04.70 kswapd0
1116 root 20 0 791548 44900 0 S 0.4 4.4 0:14.91 dockerd
1 root 20 0 37752 2664 864 D 0.2 0.3 0:06.00 systemd
실제로 많은 정보를 얻을 수 없기 때문에(매우 응답하지 않음) 무슨 일이 일어나고 있는지 말하기는 어렵지만 다음과 같습니다.
- 평균 부하가 매우 높음
- CPU 로드가 20%~30% 정도 되는 것 같습니다.
- IO/네트워크 활용도가 높지 않은 것으로 보입니다.
- 실행 대기열에 어떤 프로세스가 있는지 식별할 수 없습니다.
높은 로드 평균과 낮은 CPU 사용률을 갖는 것이 어떻게 가능합니까?
답변1
메모리가 부족하여 시스템이 스래싱 중입니다. 필요한 모든 프로세스 페이지를 메모리에 보관할 여유 메모리가 충분하지 않으므로 OS는 디스크에서 필요한 페이지를 로드할 수 있도록 일부 페이지를 확보해야 합니다. 스왑이 없으므로 해제할 페이지를 스왑 공간에 쓸 수 없으므로 유일한 대안은 읽기 전용 코드 페이지를 삭제하거나 버퍼 캐시를 축소하는 것입니다. 삭제된 페이지로 실행이 진행되면 다른 페이지를 희생하여 해당 페이지를 다시 RAM으로 읽어야 합니다. 어떤 시점에서는 문제가 너무 심해져서 대부분의 시간이 페이지가 디스크에서 로드될 때까지 기다리는 데 소비되고 유용한 작업에 사용할 수 있는 CPU 주기는 거의 없습니다.
프로세스의 로드 패턴에 따라 도움이 될 수도 있고 그렇지 않을 수도 있지만 스왑을 추가해 보십시오.
답변2
아마도 마운트 포인트 문제일 것입니다. 시스템이 해당 시점에 사용할 수 없는 마운트 지점을 마운트하려고 하면 일부 프로세스가 CPU를 점유하는 현상이 발생하지 않더라도 시스템 로드가 증가하기 시작합니다.
노력하다:
- 실행하여
mount
해당 시점에 도달할 수 없는 마운트 지점이 있는지 확인하세요. /etc/fstab
시작 시 정의된 모든 마운트 지점을 확인 하고 해당 시점에 도달할 수 없는 마운트 지점이 있는지 확인합니다.