sql >> Database teknologi >  >> RDS >> Mysql

MySQL-fejl For mange forbindelser

Shared-hosting-udbydere tillader generelt en ret lille mængde samtidige forbindelser for den samme bruger.

Hvad din kode gør er:

  • åbn en forbindelse til MySQL-serveren
  • gør det's ting (genererer siden)
  • luk forbindelsen i slutningen af ​​siden.

Det sidste trin, når det er gjort i slutningen af ​​siden, er ikke obligatorisk :(citerer mysql_close 's manual) :

Men bemærk, at du nok ikke bør bruge vedvarende forbindelser alligevel...

To tips:

  • brug mysql_connect i stedet for mysql_pconnect (allerede OK for dig)
  • Sæt den fjerde parameter af mysql_connect til false (allerede OK for dig, da det er standardværdien) :(med henvisning til manualen) :


Hvad kan så forårsage problemet?

Måske forsøger du at få adgang til flere sider parallelt (ved at bruge flere faner i din browser, for eksempel) , som vil simulere flere brugere, der bruger webstedet på samme tid ?

Hvis du har mange brugere, der bruger siden på samme tid og koden mellem mysql_connect og lukningen af ​​forbindelsen tager meget tid, det vil betyde, at mange forbindelser åbnes på samme tid... Og du når grænsen :-(

Alligevel, da du er den eneste bruger af applikationen, i betragtning af at du har op til 200 samtidige forbindelser tilladt, er der noget mærkeligt i gang...


Tja, tænker på "for mange forbindelser " og "max_connections "...

Hvis jeg husker rigtigt, max_connections begrænser ikke antallet af forbindelser dig kan åbne til MySQL-serveren, men det samlede antal forbindelser som kan åbnes til den server, af enhver, der opretter forbindelse til den .

Citerer MySQL's dokumentation om For mange forbindelser :

Så faktisk kommer problemet muligvis ikke fra dig eller din kode (hvilket ser fint ud, faktisk) :det kan "bare" være, at du ikke er den eneste, der forsøger at oprette forbindelse til den MySQL-server (husk, "delt hosting") , og at der er for mange mennesker, der bruger det på samme tid...

... Og hvis jeg har ret, og det er det , der er intet du kan gøre for at løse problemet :så længe der er for mange databaser/brugere på den server og den max_connection er indstillet til 200, vil du fortsætte med at lide...


Som en sidenote:før du går tilbage til GoDaddy og spørger dem om det, ville det være rart, hvis nogen kunne bekræfte, hvad jeg lige sagde ^^



  1. Lagring af IPv6-adresser i MySQL

  2. Konvertering af et tal til et ord i Mysql

  3. Sammenføjning af flere tabeller i SQL

  4. Hvordan kan jeg slippe alle tabellerne i en PostgreSQL-database?