1. Home
  2. Cloud a servery
  3. Virtuální server (VPS)
  4. Nastavení maxclients a serverlimit na virtuálním serveru

Nastavení maxclients a serverlimit na virtuálním serveru

Obsah

Maxclients


Nastavení MaxClients najdete v hlavním konfiguračním souboru Apache, tj. standardně  /etc/apache2/apache2.conf  

 <IfModule mpm_prefork_module>

a to pod návěstím: 

Po nastavení je vhodné pro jistotu spustit test:

apache2ctl -t

a pokud se nevyskytnou chyby, tak konfiguraci uplatníte pomocí:

apache2ctl graceful

MaxClients je možné navyšovat až do hodnoty ServerLimit, bez nutnosti restartovat server (tj. ukončit probíhající spojení).  Změna nastavení tedy nevyžaduje ani krátkou nedostupnost.

Po nastavení ServerLimit restartujeme Apache přes:

apache2ctl restart

Správná hodnota MaxClients je klíčovým prvkem pro spravování prostředků serveru, zejména paměti.

Je důležité brát ji v úvahu před a po nasazení nového hostingu na VPS, když očekáváte vysokou návštěvnost nebo se Vám zdá, že se stránky načítají pomalu. 

Pokud v časech vysoké návštěvnosti zaznamenáte „padání“ serveru či pomalé načítání stránek, nejčastější příčinou je právě její nesprávná hodnota.

Z hlediska vytížení RAM a odolnosti vůči náhlým výkyvům je možné bezpečnou hodnotu MaxClients přibližně určit podle „vzorce“

MaxClients = (RAM volná pro Apache) / (maximální RAM spotřebovaná jedním procesem Apache2). a to je vlastně:  ( [RAM VPS] – [pamět pro MySQL] – [ostatní procesy] ) / ( php.memory_limit + 15mb )

Získané hodnoty jsou pouze orientační, stav paměti je nutné sledovat. Ať je maximální počet procesů takový, že i když budou všechny zabírat maximální možnou RAM, dohromady nepřekročí dostupnou RAM. 

Horní strop RAM zabrané dceřiným procesem je daný zejména memory_limit pro php, kromě toho každý proces zabere podle použitých modulů apache2 a php od 12mb až 20mb paměti. 

Proč je tato hodnota důležitá? S počtem návštěvníků stoupá i počet požadavků na server, které musí Apache2 obsloužit. Na vybavení načítání stránky Apache2 spouští dceřiné procesy /“child process“/ , každý z nich obsluhuje jedno spojení. Každý dceřiný proces vyžaduje pro svůj běh paměť. Množství paměti, kterou spotřebuje závisí zejména od PHP aplikace a samozřejmě není je stejné pro každé načítání.

Pokud server nemá dostatek volné paměti , začne využívat swap – odkládací prostor na disku. Disk je však o několik řádů pomalejší než RAM, což se na rychlosti citelně projeví. Systém navíc spotřebuje další zdroje aby mohl neustále přesouvat data z disku do paměti a zpět. Jedná se tedy spíše o rezervu pro případy nouze a krátkodobý nárůst spotřeby paměti.

 S rostoucím počtem návštěvníků je potom stav neudržitelný a když volná RAM klesne pod kritickou hranici, server se dostane do nekonzistentního stavu, kdy je operační systém nucený ukončovat běžící služby pro zachování svého běhu. 

Na druhou stranu, pokud je hodnota MaxClients příliš nízká, dceřiné procesy nestíhají vybavit všechny požadavky včas, což vyústí do pomalého načítání a zejména do hlášení chyby HTTP 503 SERVICE UNAVAILABLE

Aktualizováno: 24 června, 2021

Byl tento článek užitečný?

Related Articles

Zákaznická podpora
24 hodin denně, 7 dní v týdnu
KONTAKTOVAT PODPORU