© 2013 All rights reserved.
3

Debian server: MaxClients and ServerLimit

Zajímavý problém se serverem, kdy webový server kolaboval při větší zátěži.debain

Využívám server, na kterém je instalovaná linuxová distribuce Debian. Na Debianu je instalován webový server Apache2 spolu s PHP 5 a zároveň s databázovým serverem MySQL.

Webový server doposud fungoval bez sebemenších problémů, až nyní se začala projevovat nepříjemná vlastnost, že server začal kolabovat. Kolaboval při větší zátěži, kdy bylo k serveru připojeno více uživatelů zároveň.

Předem upozorňuji, že jsem člověk, který zná základní nastavení a ví základy o správě serverů, ale většinou, pokud je to potřeba, si nechá server nakonfigurovat někým, kdo o dané problematice ví více a vyzná se v ní.

Server tedy začal kolabovat.

Nejprve se to začalo projevovat nepříjemnou hláškou z databáze:

Tuto hlášku určitě už většina z vás viděla různě na internetu, kdy databázový server nezvládne obsloužit takové množství spojení, které je vyžadováno.

První krok byl tedy zvednutí hodnoty Max_Connection v /etc/mysql/my.cfg (konfiguračním souboru MySQL).

Zároveň s tímto, jsem nastavil v konfiguračním souboru /etc/php5/apache2/php.ini (konfigurační soubor PHP 5), aby systém nepoužíval persistentní připojení k databázi:

Na první pohled se zdálo, že je vše pořádku a všechno již bez problémů funguje.

Nicméně nefungovalo, a stávala se nemilá věc, že systém cca po minutě opět úplně spadnul.

Nezbývalo než prohlídnou logy webového serveru (/var/log/apache2/), kde na mě čekala hláška:

Jednoduché, stačí v konfiguračním souboru /etc/apache2/apache2.conf zvýšit hodnotu MaxClients, jak je napsáno v chybovém hlášení.

Tato hodnota bohužel bez dalšího nastavení nešla zvednou na více než 256. Při větší hodnotě se mi opět dostalo chybové hlášky, tentokrát hned při restartu serveru, že je hodnota MaxClients příliš vysoká a mám ji snížit na 256.

A co teť?

Až po delší době hledání v dokumentaci, jsem konečně našel řešení problému: http://httpd.apache.org/…/mpm_common.html#serverlimit

Bylo třeba nastavit hodnotu ServerLimit, a až potom je možné zvýšit MaxClients na požadovanou hodnotu.

Této možnosti jsem si původně nevšiml, a ani jsem si ji neuvědomil, protože direktiva ServerLimit nebyla původně v konfiguračním souboru Apache vůbec uvedena a defaultní hodnota se bere bůhví odkud.

Po připsání direktivy a zvednutí MaxClients je všechno jak se zdá pořádku:

Comments (3)

Zdravím, mám úplně stejný problém. Server DEBIAN, dvoujádrový procesor, 1GB paměť. Na serveru je 15 webů, zátěž cca 25tisíc unikátních návštěvníků / den. Nejdříve jsem si myslel, že na server někdo útočí, tak jsem vše zabezpečil. Pak jsem si myslel, že kolabuje databáze a hledal jsem na netu nějaké řešení, ale nic jsem nenašel. Pokud by byla chyba v databázi nebo v množství připojení, pak nechápu proč jsem se nemohl skoro připojit přes putty, abych restartoval služby. Nyní jsem nastavil server dle tohoto článku a zatím vše šlape. Zatím to běží den, tak to nechci zakřiknout.

Tak bohužel, problém i přes nastavení serveru stále padá. na jak vysokou hodnotu můžu zvednout hodnotu maxclients?

Zdravím, právě řeším podobný problém. Server mi začal záhadně kolabovat a jediné, co jsem si všiml, že začali obrovsky narůstat počty procesů. Z uvedeného článku ale nechápu, že server kolaboval a pak po navýšení limitu bylo najednou vše v pořádku. Očekával bych, že naopak po navýšení limitu dojde k většímu přetěžování a tudíž větší nestabilitě. Já právě testuji opačnou cestu, tzn. aby server nekolaboval, tak mu naopak snížím serverlimit. Otázkou je také, na jak výkonném serveru fungujete – já mám pouze virtuální s 512MB ram a cca 1000MHz cpu. Případné informace si můžeme vyměnit i na mailu..

Add comment

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).
To cooperate, here is my phone:
+420 608 836