저는 Azure에서 일부 가상 머신을 관리하는데 일주일에 몇 번씩 무작위로 보이는데 그 중 일부가 시작됩니다.I/O 읽기 속도가 400Mb/s를 초과합니다.. 이는 동시에 발생하는 것이 아니라 한 번에 한 시스템에서 발생합니다.
이 기계는 SSD를 하드 드라이브로 사용하지만 읽기 속도는 평범해 보이지 않습니다.
또한 이 활동이 발생하는 기계몇 분 후에 SSH를 통해 액세스할 수 없습니다..
나는 현재 사용하고 있습니다오토프이 내용을 로그 파일로 출력하려고 합니다. 따라서 멈춘 컴퓨터를 다시 시작한 후 이를 검사하고 문제를 일으키는 프로세스를 식별할 수 있습니다.
나는 또한 crontab을 사용하여 매분마다 실행합니다.
내가 사용하고 있는 현재 스크립트를 아래에서 찾으세요.
#!/usr/bin/env bash
OUT=/var/log/zs/io.log
echo $(date) >> $OUT
echo $(iotop -o -b -n 1|head -n 2) >> $OUT
echo $(iotop -o -b -n 1|head -n 6|tail -n +4) >> $OUT
I/O 급증을 보여주는 로그 파일:
Fri Jan 12 09:33:01 CET 2024
Total DISK READ : 113.45 M/s | Total DISK WRITE : 7.04 M/s Actual DISK READ: 171.85 M/s | Actual DISK WRITE: 85.79 M/s
3350 be/4 root 41.59 M/s 0.00 B/s ?unavailable? containerd 11744 be/4 root 112.49 M/s 0.00 B/s ?unavailable? dockerd -H fd:// --containerd=/run/containerd/containerd.sock 11925 be/4 root 1142.56 K/s 0.00 B/s ?unavailable? dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Fri Jan 12 09:58:35 CET 2024
분명히 docker 프로세스와 관련된 것 같지만 알고 싶습니다.
- 기계에 접근할 수 없게 되는 것을 방지할 수 있습니까?
- 이 문제를 일으키는 정확한 Docker 컨테이너를 어떻게 추적할 수 있나요?
미리 감사드립니다.
답변1
Docker는 cgroup(V2)을 사용하여 io 작업에 대한 제한을 설정할 수 있어야 합니다.
그러나 디스크 쓰기 속도가 높으면 종종 다음과 같은 결과가 발생합니다.아니요SSH를 통해 컴퓨터가 응답하지 않게 만듭니다.
내 추측으로는 개별 도커 컨테이너가 아니라 OS일 것입니다. 아마도 스왑이 활성화되어 있고 컨테이너 중 하나가 RAM 사용량을 탐색 중일 것입니다.
그럼에도 불구하고, 선호하는 프로세스 모니터링 도구를 사용하면 이를 쉽게 파악할 수 있습니다. top
하겠지만 htop
Io 읽기/쓰기 속도 열도 표시하기 때문에 선호합니다.
컨테이너가 요구할 수 있는 RAM의 양을 제한하려면 동일한 메커니즘인 docker의 cgroups 통합을 사용해야 합니다. 스왑을 비활성화하지 마십시오. 이는 단기적인 메모리 초과 요구에 대한 유연성을 잃기 때문에 상황을 더욱 악화시킬 뿐입니다.