Nastavenie maxclients a serverlimit na virtuálnom serveri

 

Maxclients


Nastavenie MaxClients nájdete v hlavnom konfiguračnom súbore Apache, tj. štandardne  /etc/apache2/apache2.conf  

a to pod návestím: 

 

 <IfModule mpm_prefork_module>

 

Po nastavení je vhodné pre istotu spustiť test:

apache2ctl -t

 

a ak sa nevyskytnú chyby, tak konfiguráciu uplatníte pomocou:

 

apache2ctl graceful

 

MaxClients je možné navyšovať až do hodnoty ServerLimit, bez nutnosti reštartovať server (tj. ukončiť prebiehajúce spojenia).  Zmena nastavenia teda nevyžaduje ani krátku nedostupnosť.

 

Po nastavení ServerLimit reštartujeme Apache cez:

apache2ctl restart

 

Správna hodnota MaxClients je kľúčovým prvkom pre spravovanie prostriedkov servera, najmä pamäti.

Je dôležité brať ju v úvahu pred a po nasadení nového hostingu na VPS, keď očakávate vysokú návštevnosť alebo sa Vám zdá, že sa stránky načítavajú pomaly. 

 

Pokiaľ v časoch vysokej návštevnosti zaznamenáte "padanie" servera či pomalé načítanie stránok, najčastejšou príčinou je práve jej nesprávna hodnota.

 

Z hľadiska vyťaženia RAM a odolnosti voči náhlym výkyvom je možné bezpečnú hodnotu MaxClients približne určiť podľa "vzorca"

 

MaxClients = (RAM voľná pre Apache) / (maximálna RAM spotrebovaná jedným procesom Apache2). a to je vlastne:  ( [RAM VPS] - [pamat pre MySQL] - [ostatne procesy] ) / ( php.memory_limit + 15mb )

 

Získané hodnoty sú iba orientačné, stav pamäti je nutné sledovať. Nech je maximálny počet procesov taký, že aj keď budú všetky zaberať maximálnu možnú RAM, dohromady neprekročia dostupnú RAM. 

 

Horný strop RAM zabratej dcérskym procesom je daný najmä memory_limit pre php, okrem toho každý proces zaberie podľa použitých modulov apache2 a php od 12mb az 20mb pamäte. 

 

Prečo je táto hodnota dôležitá? S počtom návštevnikov stúpa aj počet požiadaviek na server, ktoré musí Apache2 obslúžiť. Na vybavenie načitania stránky Apache2 spúšťa dcérske procesy /"child process"/ , každý z nich obsluhuje jedno spojenie. Každý dcérsky proces vyžaduje pre svoj beh pamäť. Množstvo pamäte, ktorú spotrebuje závisí najmä od PHP aplikácie a samozrejme nie je rovnaké pre každé načítanie.

 

Pokiaľ server nemá dostatok voľnej pamäte , začne využívať swap - odkladací priestor na disku. Disk je však o niekoľko rádov pomalší ako RAM, čo sa na rýchlosti citeľne prejaví. Systém navyše spotrebuje ďalšie zdroje aby mohol neustále presúvať dáta z disku do pamäti a späť. Jedná sa teda o skôr o rezervu pre prípady núdze a krátkodobý nárast spotreby pamate.

 

 S rastúcim počtom návštevníkov je potom stav neudržateľný a keď voľná RAM klesne pod kritickú hranicu, server sa dostane do nekonzistného stavu, keď je operačný systém nútený ukončovať bežiace služby pre zachovanie svojho behu. 

Na druhej strane, pokiaľ je hodnota MaxClients príliš nizka, dcérske procesy nestíhajú vybaviť všetky požiadavky načas, čo vyústi do pomalého načítania a najmä do hlásenia chyby HTTP 503 SERVICE UNAVAILABLE