Jak opravit chybu MySQL: Příliš mnoho připojení

Úvod k chybě MySQL: Příliš mnoho připojení

Pokud máte webovou aplikaci (stránku, blog, fórum atd.), která je velmi navštěvovaná, což znamená, že ji navštěvuje velký počet uživatelů, promítá se to do zvýšené spotřeby serverových zdrojů. Pokud tato webová aplikace používá databázi MySQL a dotazy jsou velmi početné ( kvůli špatnému programování webových stránek nebo velkému počtu uživatelů ), MySQL může zobrazit tuto chybu:

mysqli_connect(): (HY000/1040): Too many connections

Co znamená chyba MySQL: Too Many Connections?

Znamená to, že na MySQL přichází příliš mnoho požadavků, více, než dokáže přijmout, více, než dokáže zařadit do fronty nebo čekat.

Jak to vyřešit?

Jednoduché, musíme zvýšit maximální limit požadavků (připojení), které MySQL podporuje.

Dám vám dvě možnosti, jak tento problém vyřešit:

1. Upravíme soubor /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

V tom jsme vložili následující pod místo, kde se říká [mysql]:

max_connections = 500 max_user_connections = 500

Tím se zvýší maximální počet připojení ze 100 (což je výchozí nastavení) na 500.

Uložíme a ukončíme, poté restartujeme službu MySQL a je to. Tato změna je trvalá.

2. Dalším způsobem, jak tento problém vyřešit, je změna maximálního limitu, ale pomocí dotazu MySQL.

Nejprve si ukážeme aktuální limit:

mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'

To nám ukáže něco takového:

+ ----------------- + ------- + | Název proměnné | Hodnota | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Jinými slovy, aktuální limit je 151 připojení, dobře, pojďme jej zvýšit na 500 pomocí dotazu:

mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'

Připraven!

Problém tímto způsobem spočívá v tom, že při restartování služby dojde ke ztrátě této konfigurace.

Chcete-li tento detail vynahradit, můžete vytvořit bash skript, který kontroluje každých X času, nebo dokonce přidat řádek do spouštěcího nebo restartovacího bloku démona 

Ale proč potom chci znát tuto 2. možnost? … no, to jsem řekl. Ale před měsícem Ubuntu Server ignoroval metodu č.1, takže... v extrémních případech hloupého OS máme tuto 2. možnost, která funguje stejně dobře 


Přidat jako preferovaný zdroj v Googlu