I/O i IOPS opisują dwa różne ograniczenia pracy z dyskiem. I/O określa przepustowość odczytu i zapisu, zwykle w KB/s lub MB/s, a IOPS liczbę operacji odczytu i zapisu wykonywanych w ciągu sekundy. Strona może więc trafiać w limit IOPS przy wielu małych operacjach, mimo że nie przesyła dużej liczby megabajtów.
W CloudLinux oba limity są rozdzielone: I/O ogranicza przepustowość dyskową, a IOPS liczbę operacji odczytu i zapisu na sekundę. W tym modelu I/O dotyczy operacji dyskowych, nie transferu sieciowego; odczyty obsłużone z cache systemowego nie muszą obciążać licznika I/O w ten sam sposób. Po osiągnięciu tych limitów procesy są spowalniane, a nie automatycznie zabijane.
Czym różni się I/O od IOPS?
I/O odpowiada przede wszystkim na pytanie „ile danych na sekundę?”, a IOPS — „ile operacji na sekundę?”. Te dwa parametry opisują więc inne rodzaje obciążenia.
| Parametr | Co ogranicza | Przykładowy rodzaj obciążenia |
|---|---|---|
| I/O | Przepustowość odczytu i zapisu danych | Odczyt lub zapis dużego archiwum, import dużego pliku, kopiowanie danych |
| IOPS | Liczbę operacji dyskowych na sekundę | Duża liczba małych plików, cache plikowy, generowanie wielu miniaturek |
I/O jest w CloudLinux podawane w KB/s, a IOPS jako liczba operacji na sekundę; w modelu LVE są to osobne limity konfigurowane niezależnie.
Dlaczego dużo małych plików może obciążać hosting bardziej niż jeden duży?
Duży plik może wymagać dużej przepustowości, ale względnie niewielkiej liczby operacji. Z kolei tysiące małych plików mogą generować bardzo wiele odczytów i zapisów, choć ich łączny rozmiar jest niewielki.
Hipotetycznie zapis jednego pliku 500 MB i zapis pięćdziesięciu tysięcy plików po 10 KB mogą przenieść podobną ilość danych, ale charakter operacji jest zupełnie inny. Drugi przypadek może być znacznie bardziej wymagający pod względem IOPS.
To nie jest uniwersalny test wydajności. Rzeczywisty czas zależy od systemu plików, cache, sprzętu, konfiguracji serwera i pozostałych limitów. Przykład pokazuje tylko, dlaczego sama liczba megabajtów nie opisuje całego obciążenia dysku.
Co dzieje się po osiągnięciu limitu I/O?
Limit I/O ogranicza przepustowość operacji dyskowych. Po dojściu do niego procesy są dławione: nadal działają, ale ich operacje dyskowe wykonują się wolniej zamiast być automatycznie kończone.
Dlatego objawem może być po prostu dłuższy czas działania: import trwa znacznie dłużej, backup wolno zapisuje archiwum, generowanie miniaturek się przeciąga albo odpowiedź aplikacji czeka na operacje plikowe.
Sam wolny proces nie dowodzi jednak, że przyczyną jest I/O. Potrzebna jest zbieżność z osiągnięciem limitu w tym samym czasie.
Co dzieje się po osiągnięciu limitu IOPS?
IOPS ogranicza liczbę operacji dyskowych wykonywanych w jednostce czasu. Po wykorzystaniu dopuszczalnej liczby operacji kolejne odczyty i zapisy czekają do następnego przedziału rozliczeniowego; limit dotyczy liczby operacji, a nie wielkości przesyłanych danych.
To sprawia, że aplikacja wykonująca wiele drobnych operacji może zwolnić mimo niskiego transferu MB/s. Jeżeli problem pojawia się podczas pracy na bardzo wielu plikach, warto sprawdzić oba parametry — I/O i IOPS — zamiast zakładać, że wystarczy większa przepustowość.
Jak sprawdzić, czy naprawdę ogranicza Cię I/O albo IOPS?
Zapisz godzinę problemu i czynność wykonywaną w tym czasie. Następnie sprawdź wykres zasobów lub poproś operatora o dane z tego samego przedziału.
W raportach CloudLinux występują osobne pola dla wykorzystania, limitu i faults I/O oraz IOPS. CloudLinux raportuje między innymi aIO, lIO, IOf oraz aIOPS, lIOPS i IOPSf. Jeżeli wykorzystanie dochodzi do limitu dokładnie w czasie spowolnienia, masz technicznie uzasadniony kierunek diagnozy.
Brak faults nie oznacza automatycznie, że dysk nie ma związku z problemem. Panel użytkownika może pokazywać ograniczony zakres danych, a opóźnienie może wynikać również z aplikacji, bazy danych, cache albo innego zasobu. Najważniejsza jest zgodność czasu i powtarzalność obserwacji.
Kiedy WordPress może mocno korzystać z I/O lub IOPS?
WordPress nie obciąża dysku w jeden stały sposób. Charakter pracy zależy od wykonywanej operacji. Dużo operacji plikowych mogą powodować między innymi:
- generowanie wielu miniaturek po imporcie obrazów,
- rozpakowywanie archiwów podczas aktualizacji lub migracji,
- tworzenie lokalnych kopii zapasowych,
- cache oparty na dużej liczbie plików,
- skany bezpieczeństwa czytające wiele plików,
- import danych zapisujący wiele plików lub zasobów.
Nie oznacza to, że każda taka operacja musi osiągać limit. Jeśli jednak spowolnienie pojawia się właśnie podczas jednej z nich, sprawdzenie I/O i IOPS jest bardziej użyteczne niż ogólne założenie, że „WordPress potrzebuje więcej CPU”.
Backup i migracja — dlaczego limity I/O i IOPS są wtedy szczególnie widoczne?
Tworzenie kopii może jednocześnie czytać wiele plików, zapisywać archiwum i kompresować dane. W takim zadaniu mogą mieć znaczenie I/O, IOPS, CPU oraz ilość wolnego miejsca. Same limity I/O i IOPS nie opisują więc całego czasu wykonania.
Podczas migracji podobny problem pojawia się przy rozpakowywaniu archiwum i odtwarzaniu dużej liczby plików. Jeśli transfer sieciowy zakończył się szybko, a samo rozpakowanie trwa długo, kolejnym krokiem jest sprawdzenie I/O, IOPS i CPU w tym samym czasie.
Potrzebną przestrzeń na takie operacje możesz oszacować w kalkulatorze potrzebnej przestrzeni. Sam kalkulator pojemności nie ocenia jednak I/O ani IOPS.
Czy NVMe oznacza wysokie I/O i IOPS dla konta?
Nie. NVMe opisuje technologię pamięci masowej, ale użytkownik hostingu współdzielonego może nadal mieć narzucony limit I/O lub IOPS przez system zarządzający zasobami. Szybki nośnik fizyczny nie mówi więc, jaki przydział otrzymuje konkretne konto.
Przy porównaniu ofert sprawdź jawny limit konta, jeśli operator go publikuje. Samo hasło „NVMe” nie zastępuje wartości I/O/IOPS ani danych z rzeczywistego okresu problemu.
Ta sama zasada dotyczy ogólnego określenia „szybki dysk”. Parametr sprzętowy serwera i limit przypisany kontu to dwa różne poziomy informacji.
I/O i IOPS a baza danych — czy to ten sam problem?
Baza danych także korzysta z dysku, ale jej wydajność zależy dodatkowo od pamięci, cache silnika, struktury zapytań, indeksów, blokad i konfiguracji serwera. W hostingu współdzielonym baza może też podlegać osobnym mechanizmom kontroli zasobów.
Jeżeli wolne jest konkretne zapytanie SQL, nie zakładaj automatycznie, że zwiększenie I/O rozwiąże problem. Najpierw trzeba ustalić, czy zapytanie rzeczywiście czeka na dysk, czy problemem jest sama konstrukcja zapytania albo inny zasób.
W przypadku ogólnie wolnego WordPressa szerszą diagnostykę znajdziesz w poradniku „WordPress działa wolno — hosting czy strona?”.
Kiedy wyższy limit I/O lub IOPS może pomóc?
Wyższy limit ma techniczne uzasadnienie wtedy, gdy obecny limit jest powtarzalnie osiągany podczas potrzebnej operacji i właśnie w tym czasie aplikacja zwalnia. Wtedy można porównać pakiet, który zwiększa konkretny parametr.
Przykład: jeśli backup uruchamiany codziennie przez kilkanaście minut stale dobija do I/O i w tym czasie użytkownicy odczuwają spowolnienie, wyższy limit może być jednym z rozwiązań. Inaczej wygląda jednorazowy import wykonywany raz na kilka miesięcy — wtedy stałe zwiększenie abonamentu nie jest jedyną opcją.
Przy IOPS analogicznie: jeżeli wiele małych operacji regularnie wykorzystuje pełny limit, podniesienie IOPS może zmniejszyć oczekiwanie. Jeżeli IOPS ma zapas, a osiągany jest CPU lub PMEM, zwiększenie limitu operacji dyskowych nie trafia w główne ograniczenie.
Jak zapytać operatora o I/O i IOPS?
Około [data i godzina] podczas [konkretna czynność / zwykłe wejście] strona lub zadanie działało wyraźnie wolniej. Proszę podać limit I/O i IOPS dla mojego pakietu oraz maksymalne wykorzystanie tych zasobów w tym czasie. Jeśli dostępne są liczniki osiągnięcia limitu, proszę podać również I/O faults i IOPS faults. Proszę wskazać, czy wyższy pakiet zwiększa I/O lub IOPS oraz z jakiej wartości do jakiej. Jeżeli te limity nie były osiągane, proszę wskazać, który zasób lub warstwa była ograniczeniem.
Takie pytanie pozwala oddzielić faktyczny limit konta od ogólnej informacji o typie dysku w serwerze.
Jak porównywać I/O i IOPS między hostingami?
Porównuj wartości tylko wtedy, gdy są podane w porównywalnych jednostkach i dla tego samego zakresu konta. I/O może być podawane w KB/s lub MB/s, a IOPS jako operacje na sekundę. Nie mieszaj tych dwóch parametrów w jeden „wynik dysku”.
Sprawdź również CPU, PMEM, NPROC i EP. W CloudLinux są to osobne limity, więc wysoki I/O przy bardzo niskim CPU nie musi oznaczać lepszego hostingu dla konkretnego WordPressa. Szersze znaczenie zasobów opisuje poradnik o limitach CPU, RAM, procesów i I/O.
Pakiety możesz zestawić w porównywarce hostingu. Jeżeli rozważasz przeprowadzkę, koszt policz w kalkulatorze opłacalności zmiany, a etapy przenosin przygotuj w planerze migracji.
I/O i IOPS mówią o dwóch różnych ograniczeniach dysku. I/O odpowiada za ilość danych przesyłanych w jednostce czasu, IOPS za liczbę operacji. Najpierw sprawdź, który z nich rzeczywiście dochodzi do limitu podczas problemu, a dopiero potem oceniaj, czy potrzebujesz innego pakietu.