Limity hostingu: inody, procesy, pamięć - co oznaczają

Inody, procesy PHP, memory_limit, CPU i IOPS - wyjaśniamy każdy limit hostingu, po czym poznasz przekroczenie i co zrobić, zanim dołożysz pieniądze.

Limity hostingu opisują cztery różne rzeczy: inody to liczba plików i katalogów (nie ich waga), procesy/wejścia PHP to liczba żądań obsługiwanych jednocześnie, pamięć to RAM dostępny dla skryptu, a CPU, IO i IOPS to moc obliczeniowa i praca dysku. Przekroczenie każdego z nich daje inny objaw - i prawie zawsze da się je naprawić bez zmiany pakietu.

Poniżej rozkładamy każdy limit po kolei: co dokładnie mierzy, po czym poznasz, że go dobijasz, ile realnie potrzebuje typowa strona firmowa oraz co zrobić w pierwszej kolejności. Na końcu tabela objawów, drzewko decyzyjne i odpowiedzi na pytania, które najczęściej dostajemy od klientów po komunikacie z panelu.

Po co w ogóle są limity

Na hostingu współdzielonym mieszka wielu klientów na jednej maszynie. Limity to ściany między mieszkaniami: dzięki nim sąsiad z zapętlonym skryptem albo sklep w środku kampanii nie zjada mocy Twojej strony. Bez nich jedno konto potrafi położyć cały serwer - i tak wyglądał hosting piętnaście lat temu.

Współczesne serwery współdzielone izolują konta na poziomie systemu (u nas robi to CloudLinux, który każdemu kontu przydziela własną „klatkę" z osobnym przydziałem CPU, pamięci i procesów). Efekt jest taki, że przekroczenie limitu wyhamowuje tylko Twoje konto, a nie sąsiadów - i odwrotnie.

Dlatego uczciwy dostawca limity OPISUJE. Słowo „nielimitowany" w cenniku oznacza zwykle tylko tyle, że limity znajdziesz w regulaminie zamiast w tabelce - a dowiesz się o nich w najgorszym momencie. Jak czytać oferty hostingowe bez naiwności, rozkładamy w przewodniku Hosting dla firm.

Inody - limit liczby plików, nie ich wagi

Inode to systemowy wpis opisujący jeden plik lub katalog - trzyma informacje o właścicielu, uprawnieniach, dacie i miejscu na dysku, w którym leży zawartość. W praktyce liczy się prosta zasada: jeden plik = jeden inode, jeden katalog = też jeden inode. Limit inodów to więc limit LICZBY obiektów, całkowicie niezależny od tego, ile ważą.

Stąd bierze się najczęstsze zdziwienie: „mam 3 GB z 20 GB miejsca, a hosting mówi, że przekroczyłem limit". Miejsce i inody to dwa osobne liczniki. Można wypełnić inody, mając dysk pusty w 90 procentach - wystarczy dużo drobnych plików.

Skąd bierze się 200 tysięcy plików

  • miniatury obrazów - WordPress z każdego wgranego zdjęcia robi kilka rozmiarów (miniatura, średni, duży, plus wersja przeskalowana dla bardzo dużych plików), a motyw i wtyczki dokładają własne; realnie jedno zdjęcie to 6-10 plików na dysku,
  • poczta - w formacie Maildir każda wiadomość to osobny plik; skrzynka z 40 tysiącami maili to 40 tysięcy inodów,
  • cache - wtyczki cache i optymalizatory zapisują tysiące drobnych plików, a po odinstalowaniu często zostawiają je na dysku,
  • kopie zapasowe robione wtyczką - trzymane na tym samym koncie, warstwa po warstwie,
  • porzucone instalacje - katalog /stara-strona, /test, /kopia z pełnym WordPressem (sam WordPress to około 2 tysiące plików),
  • logi i sesje - pliki sesji PHP i logi, których nikt nie czyści.

Jak posprzątać inody

  1. Usuń nieużywane wtyczki i motywy - razem z ich katalogami; dezaktywacja nie zwalnia ani jednego inode'a.
  2. Wyczyść cache i skasuj katalogi po odinstalowanych wtyczkach optymalizacyjnych.
  3. Ogranicz generowane rozmiary obrazów (w ustawieniach mediów) i skasuj nieużywane miniatury - przy okazji warto zająć się optymalizacją obrazów.
  4. Zarchiwizuj starą pocztę lokalnie albo skasuj kosze i foldery ze spamem - patrz IMAP a archiwum poczty.
  5. Skasuj testowe i zapasowe instalacje - a kopie zapasowe trzymaj poza kontem hostingowym.

Objawy przekroczenia inodów są charakterystyczne: nagle nie da się wgrać pliku, WordPress zgłasza błąd zapisu, poczta przestaje przyjmować wiadomości, a aktualizacje kończą się w połowie. Dobra wiadomość: to prawie nigdy nie jest powód do zmiany pakietu - to powód do sprzątania.

Procesy PHP i wejścia - limit równoczesności, nie ruchu

To limit najczęściej mylony z limitem odwiedzin. Limit równoczesnych procesów PHP mówi, ile żądań strona obsłuży w tej samej sekundzie, a nie ile osób odwiedzi ją dziennie. Skrypt, który wykonuje się 200 milisekund, zwalnia proces natychmiast; skrypt liczący 8 sekund blokuje go na 8 sekund.

Dlatego pierwszą odpowiedzią na komunikat „przekroczono limit procesów" (czyli błąd 508 albo 503) prawie zawsze jest cache, a nie wyższy pakiet. Strona z działającym cache serwuje gotowy HTML z poziomu serwera WWW i w ogóle nie uruchamia PHP - dziesięć razy większy ruch zużywa wtedy mniej procesów niż wcześniej.

Drugie pytanie brzmi: co wisi tak długo? Typowi winowajcy z naszej praktyki:

  • wtyczka odpytująca zewnętrzne API (kursy, stany magazynowe, mapy) przy każdym wejściu - gdy API nie odpowiada, każdy proces czeka do timeoutu,
  • wyszukiwarka na stronie mielona przez boty (wyszukiwanie nigdy nie idzie z cache),
  • koszyk i konto klienta w sklepie - z definicji poza cache,
  • WP-Cron uruchamiany przy każdym wejściu zamiast systemowym cronem,
  • atak na stronę logowania - setki żądań do xmlrpc.php albo wp-login.php.

Plan naprawy krok po kroku opisujemy w tekście WordPress wolno działa.

Pamięć: memory_limit, PMEM i limity WordPressa

Tu w grę wchodzą trzy różne liczby i pomylenie ich to klasyk:

  • memory_limit w PHP - ile RAM może zużyć POJEDYNCZY skrypt. Standardowa wartość w PHP to 128 MB, na hostingu zwykle 256 MB. Przekroczenie daje komunikat „Allowed memory size of X bytes exhausted".
  • WP_MEMORY_LIMIT WordPressa - własny limit WordPressa, domyślnie 40 MB (64 MB w trybie multisite), podnoszony do 256 MB na czas pracy w panelu administracyjnym. Ustawia się go w pliku wp-config.php i NIE może przekroczyć limitu PHP.
  • limit pamięci konta (PMEM) - łączna pamięć wszystkich procesów Twojego konta naraz. Możesz mieć memory_limit 512 MB i i tak dostać błąd, jeśli dziesięć jednoczesnych żądań przekroczy pulę konta.

Praktyczna kolejność działań: najpierw sprawdź, CO zjada pamięć (import wielkiego pliku CSV, kreator stron, generowanie miniatur, backup wtyczką, eksport zamówień), a dopiero potem podnoś limit. Jak i gdzie zmienić wartości bez dostępu do serwera, pokazuje tekst o ustawieniach php.ini na hostingu.

CPU, IO i IOPS - limity, o których mało kto mówi

Trzy liczniki, które w panelu wyglądają najbardziej tajemniczo, a odpowiadają za większość „strona nagle zwolniła":

  • CPU - moc procesora przydzielona kontu (zwykle w procentach rdzenia). Stałe dobijanie do sufitu przy poprawnie zoptymalizowanej stronie to jedyny sensowny powód do zmiany pakietu.
  • IO - przepustowość dysku w KB/s. Zjadają ją kopie zapasowe, importy i skany antywirusowe.
  • IOPS - liczba operacji dyskowych na sekundę. To zwykle wąskie gardło stron z dużą liczbą drobnych plików i słabym cache - i powód, dla którego dyski NVMe robią tak dużą różnicę.

Krótkie skoki po suficie CPU są normalne (aktualizacja, import, indeksowanie przez roboty). Niepokojące jest dopiero utrzymujące się obciążenie przy braku wzrostu ruchu - to sygnał ciężkiego crona, źle napisanej wtyczki albo infekcji.

Który limit boli - tabela objawów

LimitCo mierzyTypowy objawPierwsza reakcja
Inodyliczbę plików i katalogównie da się wgrać pliku, poczta odbija mailesprzątanie (miniatury, cache, stare instalacje)
Procesy / wejścia PHPrównoczesne żądaniabłąd 508/503 przy większym ruchucache + znalezienie wolnej wtyczki
memory_limitRAM jednego skryptu„Allowed memory size exhausted"podniesienie limitu, odchudzenie operacji
PMEM (pamięć konta)RAM wszystkich procesówlosowe błędy 500 przy ruchucache, mniej równoczesnych zadań
CPUmoc procesorastrona muli mimo cacheaudyt wtyczek i cronów
IO / IOPSpracę dyskuzrywy spowolnień o stałych porachprzesunięcie backupów i skanów
Transferruch wychodzącyprzekroczenie w miesiącach z kampaniąoptymalizacja obrazów, blokada hotlinkingu

Gdzie to wszystko sprawdzić

W DirectAdmin znajdziesz statystyki użycia na stronie głównej panelu (przestrzeń, inody, transfer, liczba baz i skrzynek) oraz osobne wykresy zużycia zasobów konta z historią - to na nich widać, czy limit dobijasz stale, czy raz w miesiącu podczas kopii zapasowej. Po panelu prowadzi przewodnik po DirectAdmin.

Zaglądaj tam raz w miesiącu, najlepiej przy okazji przeglądu aktualizacji. Limity nie zaskakują tych, którzy patrzą na wykresy - zaskakują tych, którzy pierwszy raz otwierają panel, gdy strona już nie działa.

Dobijasz do limitów - drzewko decyzyjne

  1. Inody? → sprzątanie według listy wyżej. To prawie nigdy nie jest powód do zmiany pakietu.
  2. Procesy albo CPU? → najpierw cache i audyt wtyczek; dopiero gdy strona jest zoptymalizowana, a ruch realnie urósł - wyższy pakiet.
  3. Pamięć? → podnieś limit i sprawdź, która operacja go zjada; jeśli jedna wtyczka potrzebuje 512 MB na zwykłe wejście, problemem jest wtyczka.
  4. Transfer? → lżejsze obrazy i blokada hotlinkingu.
  5. Wszystko naraz i stale? → wyrosłeś z pakietu. Policz z nami większy plan albo przejście na VPS; przy przenosinach migracja jest darmowa.

U nas limity są jawne przy każdym pakiecie hostingu, a zanim je przekroczysz, dostajesz powiadomienie - bez niespodzianek w środku kampanii i bez nagłego „konto zawieszone".

Najczęściej zadawane pytania

Ile inodów potrzebuje typowa strona firmowa?

Sam WordPress z motywem i kilkunastoma wtyczkami to około 15-30 tysięcy plików. Strona wizytówka z galerią mieści się zwykle w 50 tysiącach, sklep z kilkuset produktami i zdjęciami - w 100-200 tysiącach. Jeśli licznik pokazuje pół miliona przy małej stronie, to nie kwestia pakietu, tylko śmieci na koncie.

Czy „nielimitowany hosting" naprawdę nie ma limitów?

Ma - tylko nie w cenniku. Limity procesów, CPU i pamięci istnieją zawsze, bo bez nich serwer współdzielony nie mógłby działać; przy ofercie „bez limitów" znajdziesz je w regulaminie albo w klauzuli o „rozsądnym użyciu". Wolimy podawać liczby wprost: łatwiej dobrać pakiet, gdy wiadomo, co się w nim mieści.

Co oznacza błąd 508 na mojej stronie?

To komunikat o wyczerpaniu limitu równoczesnych wejść do PHP - serwer nie ma wolnego procesu, żeby obsłużyć kolejne żądanie. Najczęstsze przyczyny: brak cache, wolna wtyczka blokująca procesy albo ruch botów. Ustaw cache, sprawdź czasy odpowiedzi i dopiero wtedy rozważaj wyższy pakiet.

Czy mogę sam podnieść limit pamięci PHP?

Tak - na naszym hostingu memory_limit zmienia się w panelu, bez zgłoszenia do pomocy technicznej. Pamiętaj, że WordPress ma dodatkowo własny limit (WP_MEMORY_LIMIT w pliku wp-config.php), który potrafi być niższy niż ustawienie serwera; podniesienie tylko jednego z nich niczego nie zmieni.

Czy poczta wlicza się do limitów strony?

Do inodów i przestrzeni - tak, bo skrzynki leżą na tym samym koncie i każda wiadomość to osobny plik. Do limitów CPU i procesów PHP - nie, poczta chodzi w osobnych usługach serwera. Dlatego duże skrzynki potrafią wyczerpać inody, nie spowalniając przy tym strony ani o milisekundę.

Jak znaleźć katalog, który zjada inody?

W panelu hostingu wystarczy menedżer plików i sortowanie po liczbie elementów, ale najszybciej działa przegląd trzech miejsc po kolei: wp-content/uploads (miniatury), wp-content/cache oraz katalogi skrzynek pocztowych. W 9 przypadkach na 10 winowajca jest w jednym z nich. Jeśli wolisz nie grzebać - policzymy to za Ciebie w ramach opieki nad hostingiem.

Co się stanie, gdy przekroczę limit - strona zniknie?

Nie. Przekroczenie limitu CPU czy procesów powoduje chwilowe spowolnienie albo błąd 508 dla części odwiedzających, a nie wyłączenie konta; po opadnięciu obciążenia wszystko wraca do normy. Trwałe konsekwencje pojawiają się dopiero przy uporczywym, wielodniowym przeciążaniu serwera - i zawsze poprzedza je kontakt z naszej strony.

Powiązane poradniki

Wszystkie poradniki z kategorii: Hosting od podstaw

Powiązane usługi McProdukt

  • Hosting WWW NVMe - szybki hosting z LiteSpeed, darmowym SSL i codziennym backupem

Zobacz również