2016-08-01 6 views
8

일부 클라우드 호스팅 솔루션의 디스크 IO가 실제로 좋지 않은 것으로 나타났습니다. 이로 인해 디스크 사용량이 적을 때까지 스크립트를 대기시킴으로써 해결할 수있는 몇 가지 문제가 발생합니다.HDD가 PHP와 얼마나 바쁜지 어떻게 확인할 수 있습니까?

PHP를 사용하면 상황을 악화시키지 않으면 서 파일 시스템의 바쁜 (또는 너무 바쁜) 상태를 모니터링 할 수 있습니까?

+1

글쎄, 당신은 분명히 모든 종류의 시스템 유틸리티를 작동시키고 결과물을 평가하여 사람으로 그릴 수있는 모든 정보를 얻을 수 있습니다. 그러나 나는 이것이 당신이 묘사하는 시나리오에서 실제로 도움이되는지 의심 스럽다. 가상화 된 시스템에 나타나는 "하드 디스크"는 시뮬레이션 된 것입니다. 그래서 유틸리티는 몇 가지 정보를 보여줄 수 있습니다. 그러나 질문은 그 안에 얼마나 많은 진실이 있는지입니다. 이러한 시나리오의 성능 저하는 시스템 하드웨어 (가상 어쨌든)에있는 것이 아니라 제어하거나 예측할 수없는 모든 서비스를 제공하는 전체 네트워크 클러스터 내에서 발생합니다. – arkascha

+1

현재 솔루션으로 문제가 발생하면 더 나은 공급자 또는 더 나은 제안을 얻을 수 있습니다. 서로 다른 제공 업체간에 _ 큰 차이가 있습니다. 종종 잘 알려지지 않은 공급자는 잘 알려진 회사보다 훨씬 나은 성능을 제공합니다. – arkascha

+0

필자는 더 이상 프로젝트에 참여하지 않겠다는 사실을 덧붙여 야합니다. 이 시스템은 HDD 읽기에 불경스러운 지연을 보였습니다. DB 대신 HDD에 캐싱하면 실제로 연결 시간이 초과되었습니다. 그것은 내가 함께 일한 최악의 플랫폼이었습니다. 나는 DB에 config vars를 저장하는 것을 끝냈다. –

답변

17

Linux 시스템 인 경우 디스크 사용량을 직접 계산할 수 있습니다. 구현하기로 선택한 언어는 동일한 개념을 사용합니다.

커널은 대체로 sysfs을 사용하므로 시스템에 대한 많은 정보가 /sys에 있습니다. 우리는 원하는 디스크에 대한 정보를 정기적으로 수집하고 그 차이를 기반으로 사용량을 계산할 수 있습니다.

내 시스템에서는 디스크가 sda 인 경우 사용자가 다를 수 있습니다. 우리는 /sys/class/block/<dev>/stat에 대한 the Kernel documentation를 보면

$ cat /sys/class/block/sda/stat 
    42632  25 2045318 247192 6956543 7362278 123236256 23878974  0 3703033 24119492 

이제 우리는 출력의 각 열에 대한 다음 설명을 볼 수 있습니다.

Name   units   description 
----   -----   ----------- 
read I/Os  requests  number of read I/Os processed 
read merges  requests  number of read I/Os merged with in-queue I/O 
read sectors sectors  number of sectors read 
read ticks  milliseconds total wait time for read requests 
write I/Os  requests  number of write I/Os processed 
write merges requests  number of write I/Os merged with in-queue I/O 
write sectors sectors  number of sectors written 
write ticks  milliseconds total wait time for write requests 
in_flight  requests  number of I/Os currently in flight 
io_ticks  milliseconds total time this block device has been active 
time_in_queue milliseconds total wait time for all requests 

우리가 cron 일정으로 실행하고 일부 대기 시간을 비교하면 각 작업을 기다리는 시간을 알 수 있습니다. 총 IOPS 및 RW 대역폭에 대한 다른 통계도 있습니다. 문서는 각 필드에 대해 자세히 다룹니다.

)

선택 무엇이든간에 언어, 파일 기술자는 디스크에 대한 정보는 우리가 일정에 이렇게 할 경우

/sys/class/block/<dev>/stat 

, 우리는 멋진 그래프를 그릴 수있을 것 얻기 위해 엽니 다

enter image description here

+7

이 답변은 너무 좋았습니다. 나는 그것을 시험해 볼 기회를 얻지 못해서 미안했습니다. 그때 나는 그 프로젝트에 더 이상 참여하지 않아 얼마나 기뻤는지 기억했다. –

+3

죄송합니다. 게시물을 다시 게시하십시오. 메타에 그것을보고 내 그래프를 공유해야만했습니다 : D 그러나 프로젝트에 관계없이 그래프는 항상 문제를 식별 할 수 있어야하는 좋은 방법입니다! 행운을 빕니다! (나는 [Grafana] (https : // grafana.co.kr /)) 죄송합니다. 게시물을 더 빨리 보지 못했습니다! –

+2

안녕하세요, 문제 없습니다. 당신은 그 질문에 무엇을해야하는지에 대한 나의 걱정을 해결했습니다. 지금은 유용하기 때문에, 그것은 승리입니다. –