2016-08-01 77 views
8

Zauważyłem, że niektóre rozwiązania hostingu chmury mają naprawdę słabe Disk IO. Powoduje to kilka problemów, które można rozwiązać, czekając, aż skrypt będzie mniej zajęty.Jak sprawdzić, jak zajęty jest dysk twardy w PHP?

Czy z PHP można monitorować stan zajętości (czy też nie jest tak zajęty) systemu plików bez pogorszenia działania?

+1

Cóż, na pewno można uruchamiać wszelkiego rodzaju narzędzia systemowe i oceniać ich wyniki, aby uzyskać wszelkie informacje, które można również narysować jako ludzie. Jednak wątpię, czy to naprawdę pomaga w scenariuszu, który opisujesz. "Dysk twardy" widoczny w zwirtualizowanym systemie jest symulowany. Więc narzędzia mogą pokazywać pewne informacje, ale pytanie brzmi, ile w tym prawdy. Słaba wydajność w takich sytuacjach nie jest związana ze sprzętem systemowym (tak czy inaczej jest wirtualny), ale w całym klastrze sieciowym oferującym wszystkie usługi, których nie można kontrolować ani przewidzieć. – arkascha

+1

Powiedziałbym, że w przypadku problemów z aktualnym rozwiązaniem zdobądź lepszego dostawcę lub lepszą ofertę. Istnieją ogromne różnice między różnymi dostawcami. Często mniej znani dostawcy oferują znacznie lepszą wydajność niż znane firmy. – arkascha

+0

Powinienem dodać, że nie jestem już w projekcie (i wdzięczny, że tak nie jest). System miał bezbłędne opóźnienie odczytu na dysku twardym. Przechodzenie na dysk twardy zamiast do bazy danych faktycznie spowodowało przekroczenie limitu czasu połączeń. To była najgorsza platforma, z jaką kiedykolwiek pracowałem. Skończyło się na przechowywaniu zmiennych konfiguracyjnych w DB, ponieważ szybciej było je uzyskać w ten sposób. –

Odpowiedz

17

Jeśli jest to system Linux, możesz sam obliczyć użycie dysku - język, w którym chcesz go wdrożyć, użyje tych samych pojęć.

Twoje jądro najprawdopodobniej używa sysfs, dzięki czemu wiele informacji o twoim systemie jest dostępnych pod numerem /sys; możemy pobrać informacje o naszych pożądanych dyskach w regularnych odstępach czasu i obliczyć wykorzystanie na podstawie różnic między nimi.

W moim systemie będę patrzył na dysk, sda, twój może się różnić.

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

Teraz, jeśli spojrzymy na the Kernel documentation dla /sys/class/block/<dev>/stat widzimy następujące opisy dla każdej kolumny wyjścia.

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 

Jeśli uruchomić to w harmonogramie cron i diff niektóre czas oczekiwania, możemy zobaczyć, jak długo czekamy na każdej operacji. Będziesz mieć również inne statystyki dotyczące całkowitego IOPS i przepustowości RW. Dokumentacja jest dokładniejsza na każdym polu.

Cokolwiek język zostanie wybrany, deskryptor pliku, aby otworzyć, aby uzyskać informacje na temat dysku będzie

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

Jeśli robimy to zgodnie z harmonogramem, możemy wyciągnąć fantazyjne wykresy;)

enter image description here

+7

Ta odpowiedź jest tak wspaniała, że ​​prawie mi przykro, że nie mam okazji jej wypróbować. Potem przypomniałem sobie, jak bardzo się cieszę, że nie będę już w tym projekcie. –

+3

Przepraszamy, że ożywimy wpis; zobaczyłem to na meta i musiałem podzielić się moimi wykresami: D Ale niezależnie od projektu, wykresy zawsze są dobrą rzeczą, aby móc identyfikować problemy! Powodzenia! (Używam [Grafana] (https: // grafana.com /)) Niestety nie widziałem postu wcześniej! –

+2

Hej, nie ma problemu. Rozwiązałeś moje obawy o to, co zrobić z tym pytaniem. Przydaje się teraz, to jest wygrana. –