Too many connections

Jozef Babjak jozef.babjak at gmail.com
Mon Oct 22 00:03:34 CEST 2007


> poslednej dobe sa mi casto objavuje hlaska MySQL "Too many connections". Mal
> som tam 512 MB, tak som kupil nove pamate (2 GB) v domneni, ze to pomoze. Na
> serveri bezi "vsetko" (MySQL, Apache, DNS, PHP, Postfix...).
> Chcem sa opytat, ci staci len zvysit "max_connections" a ak ano tak ake
> hodnoty pouzivate.

  ^-- S MySQL som nikdy nepracoval, ale pracoval som s inymi databazami,
takze skusim. Kazda databaza ma konfigurovatelny limit, kolko pripojeni
sucasne maximalne obsluzi. Tento limit by mal byt nastaveny o malo vyssi,
ako je skutocna potreba maximalneho poctu pripojeni. Mal by byt o trochu
vyssi, aby nedochadzalo k odmietaniu spojeni (ona vyssie zmienena hlaska
too many connections), ale na druhej strane by nemal byt zbytocne vysoky,
pretoze databaza potom alokuje niektore zdroje 'per connection' a cim s vyssim
poctom pripojeni musi pocitat, tym mensie zdroje prideli jednemu pripojeniu.

V Tvojom pripade bol pravdepodobne parameter max_connecitons nastaveny
presne podla vyssie uvedenych pravidiel, t.j. tesne nad maximalnym pozadovanym
poctom pripojeni. Casom ale vzrastli naroky na pocet pripojeni, a teda zacal
byt nastaveny limit obmedzujucim. Patrne spravnym riesenim bude zvysit
limit max_connections na vyssiu hodnotu, aby ku chybe prestalo dochadzat,
ale urcite by bolo spravne vediet, preco sa "zrazu" zvysil pocet potrebnych
pripojeni. Dovodov moze byt niekolko:

1) Zvysila sa zataz aplikacie. Aplikacia skutocne musi obsluhovat vacsie
mnozstvo requestov a teda castejsie chodi do databazy, na co potrebuje
vacsie mnozstvo pripojeni.

2) Obsluha databazovych requestov trva dlhsie. Hoci sa pocet requestov
nezvysil, zvysil sa cas ich obsluhy a teda konekcie sa nestacia uvolnovat
dostatocne rychlo. Dovodov moze byt vela:

2.1) V databaze casom pribudli udaje a databazove operacie trvaju proste dlhsie.

2.2) V systeme pribudla nova zataz, ktora cerpa zdroje (dalsia
aplikacia, cron job).

2.3) Zmenili sa indexy v databaze, mozno odbudli (trvaju dlhsie selecty), mozno
pribudli (teoreticky trvaju dlhsie inserty a updaty).

3) Spojenia sa neuzatvaraju vobec. Moze byt sposobene zmenou/chybou
v aplikacii pouzivajucej databazu.

Prikupenim pamate si urcite nic nepokazil.

Aky je spravne nastavenie max_connections sa neda povedat dobrej
znalosti uplne konkretneho nasadenia. Poznam databazy, kde 1000
pripojeni sucastne je v poriadku ako aj databazy, kde 10 pripojeni
sucastne by bol nezvladnutelny stav.

Tento dotaz je sa ale patrne FreeBSD vobec netyka.

J.



More information about the Users-l mailing list