I/O 요청이 정상 속도로 돌아왔는지 확인하는 방법은 무엇입니까?

I/O 요청이 정상 속도로 돌아왔는지 확인하는 방법은 무엇입니까?

~에아마존 웹 서비스나는t2.small EC2LAMP(PHP) 스택에서 몇 개의 웹사이트를 제공하는 VPS로 인스턴스를 사용합니다. 방금 평소 청구서의 거의 3배에 달하는 청구서를 받았습니다. 내가 보기엔 내I/O 요청 사용량이 매우 높았습니다.. 서버에 로그인했는데 디스크가 가득 찬 것을 확인했습니다. 중요하지 않은 파일과 로그를 잔뜩 제거했는데 디스크(EBS) 용량이 이제 60% 미만인데 두 가지를 확인하고 싶습니다.

  1. 디스크가 가득 차서 I/O 요청 수가 많은 것인지 어떻게 알 수 있나요?
  2. I/O 요청이 계속 처리되고 있는지 어떻게 알 수 있나요?

AWS 관련 서비스가 없었습니다.클라우드워치모니터링 서비스가 활성화되어 있으므로 #1에 대한 답변을 얻지 못할 수도 있지만 어떤 조언이라도 주시면 감사하겠습니다.

#2에 관해서는 에서 언급한 두 가지 방법을 사용했습니다.이 블로그 게시물내 I/O 속도를 결정하는 데 매우 높은 것 같습니다. 다음은 서버의 일부 통계입니다.

$ iostat
Linux 3.13.0-45-generic (dysphoria)     2015-10-08      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.74    0.01    0.69   16.83    0.43   79.30

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda            170.08     10039.29        32.52  843300857    2731428
xvdf              0.01         0.02         0.00       1308          0

$ cat /proc/diskstats
   1       0 ram0 0 0 0 0 0 0 0 0 0 0 0
   1       1 ram1 0 0 0 0 0 0 0 0 0 0 0
   1       2 ram2 0 0 0 0 0 0 0 0 0 0 0
   1       3 ram3 0 0 0 0 0 0 0 0 0 0 0
   1       4 ram4 0 0 0 0 0 0 0 0 0 0 0
   1       5 ram5 0 0 0 0 0 0 0 0 0 0 0
   1       6 ram6 0 0 0 0 0 0 0 0 0 0 0
   1       7 ram7 0 0 0 0 0 0 0 0 0 0 0
   1       8 ram8 0 0 0 0 0 0 0 0 0 0 0
   1       9 ram9 0 0 0 0 0 0 0 0 0 0 0
   1      10 ram10 0 0 0 0 0 0 0 0 0 0 0
   1      11 ram11 0 0 0 0 0 0 0 0 0 0 0
   1      12 ram12 0 0 0 0 0 0 0 0 0 0 0
   1      13 ram13 0 0 0 0 0 0 0 0 0 0 0
   1      14 ram14 0 0 0 0 0 0 0 0 0 0 0
   1      15 ram15 0 0 0 0 0 0 0 0 0 0 0
   7       0 loop0 0 0 0 0 0 0 0 0 0 0 0
   7       1 loop1 0 0 0 0 0 0 0 0 0 0 0
   7       2 loop2 0 0 0 0 0 0 0 0 0 0 0
   7       3 loop3 0 0 0 0 0 0 0 0 0 0 0
   7       4 loop4 0 0 0 0 0 0 0 0 0 0 0
   7       5 loop5 0 0 0 0 0 0 0 0 0 0 0
   7       6 loop6 0 0 0 0 0 0 0 0 0 0 0
   7       7 loop7 0 0 0 0 0 0 0 0 0 0 0
 202       0 xvda 14198708 1225 1686588426 26715600 87579 51756 5461696 11290600 0 16654328 38003076
 202       1 xvda1 14198527 1203 1686586802 26715376 87579 51756 5461696 11290600 0 16654236 38002848
 202      80 xvdf 447 6 2616 288 0 0 0 0 0 288 288

$ free -m
             total       used       free     shared    buffers     cached
Mem:          2000       1910         89          6          6       1216
-/+ buffers/cache:        688       1312
Swap:            0          0          0

위 정보는 부팅 직후에 수집된 정보이지만, iostat보고서에는 시스템이 몇 시간 동안 실행된 후에도 50-80 범위의 초기 TPS가 표시됩니다. 서버는 약 20개 사이트에 서비스를 제공하고 있으며 그 중 하루에 몇 건 이상의 조회수를 기록하는 사이트는 3개뿐입니다. 하루에 수백 명의 방문객이 찾아옵니다.서버와 사이트는 수년간 문제 없이 이 구성을 유지했습니다.최근에야 I/O가 급증하기 시작했으며 코드, 서버 구성 또는 웹 사이트 로드에는 해당 변경 사항이 없습니다.

이 질문은 원래 에 요청되었습니다.Amazon Web Services 공식 포럼그러나 아무도 거기에서 도움을 줄 수 없는 것 같았습니다. 아마도 해당 포럼에 대한 질문은 너무 일반적인 것 같습니다.

답변1

iostat 매뉴얼 페이지에는 이해하지 못할 경우 제시된 데이터에 대한 오해를 초래할 수 있는 중요한 정보가 있습니다.

iostat 명령으로 생성된 첫 번째 보고서는 시스템이 부팅된 이후 시간에 관한 통계를 제공합니다. 각 후속 보고서는 이전 보고서 이후의 시간을 다룹니다. iostat 명령이 실행될 때마다 모든 통계가 보고됩니다.

따라서 위의 간단한 iostat는 시스템이 시작된 이후 수집된 값을 보고합니다.

간격을 두고 iostst를 실행하고 첫 번째 통계 세트를 삭제하는 것이 더 일반적입니다. 예:

iostat 5

그러면 5초마다 관련 통계가 보고됩니다.

올바른 데이터를 수집하면 상황을 더 잘 이해할 수 있습니다.


다음을 살펴보세요.꼭대기에명령. 특히 권한을 가지고 실행하고 선택하면 d스레드당 디스크 IO 통계가 활성화됩니다.

관련 정보