Introduktion til MySQL-fejlen: For mange forbindelser
Når du har en webapplikation (hjemmeside, blog, forum osv.), der oplever høj efterspørgsel, hvilket betyder, at et stort antal brugere besøger den, resulterer dette i øget forbrug af serverressourcer. Hvis denne webapplikation bruger en MySQL-database, og forespørgslerne er meget talrige ( på grund af dårlig hjemmesideprogrammering eller et stort antal brugere ), kan MySQL vise denne fejl:
mysqli_connect(): (HY000/1040): Too many connections
Hvad betyder MySQL: For mange forbindelsesfejl?
Det betyder, at der kommer for mange anmodninger til MySQL, mere end det kan acceptere, mere end det kan stå i kø eller vente.
Hvordan løses det?
Enkelt, vi skal øge den maksimale grænse for anmodninger (forbindelser), som MySQL understøtter.
Jeg giver dig to muligheder for at løse dette problem:
1. Vi redigerer filen /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
I det sætter vi følgende under hvor det står [mysql]:
max_connections = 500 max_user_connections = 500
Dette øger det maksimale antal forbindelser fra 100 (som er standard) til 500.
Vi gemmer og afslutter, derefter genstarter vi MySQL-tjenesten, og det er det. Denne ændring er permanent.
2. En anden måde at løse dette problem på er ved at ændre den maksimale grænse, men ved hjælp af en MySQL-forespørgsel.
Lad os først vise den aktuelle grænse:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Dette vil vise os noget som dette:
+ ----------------- + ------- + | Variabel_navn | Værdi | + ----------------- + ------- + | max_forbindelser | 151 | + ----------------- + ------- +
Med andre ord er den nuværende grænse 151 forbindelser, ja, lad os hæve den til 500 ved hjælp af en forespørgsel:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Klar!
Problemet på denne måde er, at når konfigurationen genstartes, går konfigurationen tabt.
For at kompensere for denne detalje, kan du lave et bash-script, der tjekker hver X mængde tid, eller endda tilføje linjen til start- eller genstartsblokken for dæmonen
Men hvorfor vil jeg så vide denne anden mulighed? … ja, det var hvad jeg sagde. Men for en måned siden ignorerede en Ubuntu-server metode nr. 2, så... i ekstreme tilfælde af dumt OS har vi denne anden mulighed, der fungerer lige så godt