Mit jelentenek a tárhelycsomagok erőforrás-korlátai?
A megosztott tárhelyek fizikai és szoftveres korlátainak részletes elemzése: CPU, RAM, EP, I/O és Inode értékek működése a gyakorlatban.
Amikor egy vállalkozó vagy független fejlesztő tárhelycsomagot választ, a szolgáltatók értékesítési oldalain leginkább a gigabájtokban megadott háttértár méretével és a lehetséges domainek számával találkozik. A modern weboldalak esetében azonban ritkán a puszta lemezterület határozza meg a működés stabilitását. A megosztott tárhelyeken (shared hosting) futó alkalmazások teljesítményét szoftveres izolációs rétegek és szigorúan szabályozott erőforrás-korlátok vigyázzák, amelyek túllépése azonnali kimaradáshoz vagy lassuláshoz vezethet.
Ahhoz, hogy megértsük, mi történik a szerver gépházában, először a megosztott környezet alapvető felépítését kell átlátnunk. Egyetlen fizikai szerveren akár több száz vagy több ezer elkülönített felhasználói fiók osztozik az erőforrásokon. Ha egyetlen weboldal hirtelen óriási terhelést kapna – például egy sikeres kampány vagy egy hibásan megírt szkrípt miatt –, a szerver teljes számítási kapacitását elszívná a többi bérlő elől. Ennek megakadályozására a szolgáltatók izolációs rendszereket (például CloudLinux LVE, azaz Lightweight Virtual Environment technológiát) alkalmaznak.
A legfontosabb erőforrás-mutatók a tárhelyen
Az alábbiakban sorra vesszük azokat a technikai paramétereket, amelyek a háttérben meghatározzák weboldalad tényleges terhelhetőségét:
1. CPU korlát (Processzor kapacitás)
A CPU-korlátot a szolgáltatók általában a fizikai processzormagok százalékos arányában vagy dedikált magok számában (például 100% CPU = 1 fizikai/logikai mag) adják meg. Ha egy dinamikus weboldal – például egy WordPress vagy WooCommerce áruház – PHP szkriptjei lefutnak, minden egyes oldalletöltés számítási kapacitást igényel. Ha a bejövő kérések feldolgozása meghaladja a fiókhoz rendelt CPU-korlátot, a szerver nem dobja el azonnal a kapcsolatot, hanem lelassítja a folyamatok végrehajtását. A látogató számára ez úgy csapódik le, hogy az oldal másodpercekig homokórázik a betöltés során.
2. Fizikai memória (RAM)
A tárhelyfiókhoz rendelt RAM korlátozza, hogy a PHP folyamatok, az adatbázis-lekérdezések átmeneti pufferjei és a kapcsolódó modulok egyidejűleg mennyi memóriát foglalhatnak le a rendszerben. Egy átlagos belépő szintű megosztott tárhelycsomag 512 MB és 2 GB közötti RAM kapacitást biztosít. Amennyiben egy összetett bővítmény vagy egy nagy adatmennyiséget feldolgozó háttérfolyamat túllépi ezt a keretet, a rendszer biztonsági okokból leállítja a memóriát túlépő PHP folyamatot. Ennek eredménye a böngészőben megjelenő 500 Internal Server Error vagy a Memory Limit Exceeded hibaüzenet.
3. Belépési folyamatok és egyidejű szkriptek (EP / NPROC)
Az EP (Entry Processes), más néven belépési folyamatok száma azt határozza meg, hogy hány HTTP/HTTPS kérés futtathat egyidejűleg PHP szkriptet a tárhelyfiókban. Fontos tisztázni, hogy az EP nem egyenlő az oldal egyidejű látogatóinak számával. A statikus elemeket (képek, CSS stíluslapok, JS fájlok) a webszerver (Nginx, Apache vagy LiteSpeed) közvetlenül szolgálja ki anélkül, hogy PHP belépési folyamatot kötne le. Egy PHP szkript lefutása általában 50–200 milliszekundumig tart. Ha azonban egy tárhelycsomagban az EP korlát 20-ra van állítva, és pontosan abban a pillanatban 21 olyan kérés érkezik, amely PHP végrehajtást igényel, a 21. kérés várakozási sorba kerül vagy elutasításra talál.
AZ NPROC (Number of Processes) ezzel szemben a fiók által indítható összes folyamat (beleértve a cron feladatokat, SSH munkameneteket és adatbázis kéréseket) maximális számát szabályozza.
4. Lemez I/O és IOPS (Adatátviteli sebesség)
Az I/O (Input/Output) korlát megadja, hogy a tárhelyfiók másodpercenként mekkora adatmennyiséget olvashat be vagy írhat ki a szerver háttértárára (például 10 MB/s vagy 30 MB/s). Az IOPS (Input/Output Operations Per Second) pedig a másodpercenként végrehajtható lemezműveletek számát korlátozza. Ha a weboldalad nem használ hatékony gyorsítótárazást (caching), és minden egyes oldalmegtekintésnél tucatnyi fájlt és adatbázis-fájlt olvas be a lemezről, a szűk I/O kapacitás miatt az egész rendszer lelassul, függetlenül attól, hogy mennyi szabad CPU vagy RAM áll rendelkezésre.
5. Inode korlát (Fájlok és könyvtárak száma)
Az inode a fájlrendszer azon adatstruktúrája, amely egy-egy fájl vagy könyvtár metaadatait (méret, jogosultságok, tulajdonos, fizikai elhelyezkedés) tárolja. Egy inode pontosan egy fájlnak vagy könyvtárnak felel meg. A tárhelyszolgáltatók nem csak a lemezterület méretét (bájtokban), hanem az fájlok maximális számát is korlátozzák – egy átlagos fiókban ez 100 000 és 300 000 inode között mozog.
Gyakori jelenség, hogy egy weboldal a 10 GB-os tárhelyéből mindössze 1 GB-ot használ fel, mégis működésképtelenné válik, mert a gyorsítótár (cache), a logfájlok vagy a képméretező modulok százezer apró fájlt hoztak létre, és elértek az inode-plafont. Ekkor a szerver nem tud új fájlt létrehozni, ami megakadályozza a képfeltöltést, a munkamenetek (session) mentését és az adatbázis frissítését.
Mi történik a korlátok elérésekor?
Amikor egy tárhelyfiók eléri a számára kijelölt erőforrás-határokat, a szerver védelmi mechanizmusai lépnek életbe. A hibajelenségek alapján pontosan beazonosítható, hogy melyik korlát szorítja meg a rendszert:
- HTTP 508 Resource Limit Reached: A CloudLinux környezetek tipikus visszajelzése, amikor a fiók túllépte a számára engedélyezett egyidejű folyamatok (EP) vagy a memóriakeret határát. A webszerver visszautasítja az új bejövő kéréseket, amíg a futó folyamatok le nem zárulnak.
- HTTP 503 Service Unavailable: Akkor fordul elő, ha a webszerver várakozási sora megtelik, és nem tud több kérést feldolgozni.
- HTTP 504 Gateway Timeout: Ha a CPU vagy az I/O korlát miatt a PHP folyamat végrehajtása olyan lassan halad, hogy átlépi a webszerver maximális várakozási idejét (például 30 vagy 60 másodperc), a kapcsolat megszakad.
- Adatbázis csatlakozási hibák (Error Establishing a Database Connection): Ha a MySQL/MariaDB adatbázis-szerver elérte a fiókonkénti maximális egyidejű kapcsolatszámot (max_user_connections), a weboldal nem tud csatlakozni az adatbázishoz.
Hogyan ellenőrizhetők az erőforrások?
A legtöbb korszerű tárhelyvezérlő pult (például cPanel, DirectAdmin vagy cPanel LVE Manager) külön modulban mutatja az erőforrás-felhasználás grafikonjait. Itt visszamenőleg is látható, hogy történt-e CPU, RAM vagy EP kiugrás az elmúlt 24 órában vagy 30 napban.
Ha egy weboldal rendszeresen beleütközik a csomagkorlátokba, két út áll a döntéshozó előtt: vagy optimalizálja az alkalmazást (gyorsítótárazás bevezetése, felesleges bővítmények eltávolítása, adatbázis-takarítás), vagy nagyobb erőforrás-kerettel rendelkező tárhelycsomagra, esetleg VPS (Virtuális Magánszerver) környezetre vált. Az erőforrás-korlátok ismerete segít abban, hogy ne vakon vásároljunk nagyobb csomagot, hanem a tényleges szűk keresztmetszetet orvosoljuk.