www.www.zaachi.com »  Blog/Software  »  Debian server: MaxClients and ServerLimit

Debian server: MaxClients and ServerLimit



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

 

Reklama

Pokud mě chcete podpořit a jste milovník jedné stopy, navštivte můj projekt: MotoArena.cz

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:

Too many connection

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).

max_connections = 500

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:

; Allow or prevent persistent links.
mysql.allow_persistent = On

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:

[error] server reached MaxClients setting, 
consider raising the MaxClients setting

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:


   StartServers 20
   MinSpareServers 20
   MaxSpareServers 100
   ServerLimit 500
   MaxClients 500
   MaxRequestsPerChild 10

 

 


linkuj topclanky
Komentáře (3)

Autor: Zaachi
Publikováno: 18.7.2008 00:47:36


Mohlo by vás zajímat:
Debian: když vám server nakyne
Debian & Mysql: reset hesla
Vývoj aplikací pro iPhone: Send data to a Web server
Linux a NX server: vzdálené ovládání stanice
TOPLIST.cz
rss coments img img img