12. august 2002 - 15:34 Der er 19 kommentarer og
1 løsning

"Too many connections in " MYSQL

Hejsa, nogle ganeg for jeg den her på min side:

Warning: Too many connections in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\mscon.php on line 2

Warning: MySQL Connection Failed: Too many connections in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\mscon.php on line 2

Warning: Can't connect to MySQL server on 'localhost' (10061) in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\mscon.php on line 3

Warning: MySQL Connection Failed: Can't connect to MySQL server on 'localhost' (10061) in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\mscon.php on line 3

Warning: MySQL: A link to the server could not be established in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\mscon.php on line 3

Warning: Can't connect to MySQL server on 'localhost' (10061) in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\stat.php on line 4

Warning: MySQL Connection Failed: Can't connect to MySQL server on 'localhost' (10061) in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\stat.php on line 4

Warning: MySQL: A link to the server could not be established in D:\web\ildstorm.dk_o1t3sy\wwwroot\admincasper\stat.php on line 4
Der skete en fejl i pageviews
Can't connect to MySQL server on 'localhost' (10061)

Hvad kan det skyldes, og hvordan retter jeg det - går ikke ud fra det er en programmerings fejl, da det kun sker nogle gange.

/Casper www.enter-s.dk
Avatar billede barlach Nybegynder
12. august 2002 - 15:38 #1
lukker du dine forbindelser igen med mysql_close() ??
hvis ikke så prøv det.
Avatar billede tipsen Nybegynder
12. august 2002 - 15:39 #2
Prøv at finde følgende i php.ini:

[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On

; Maximum number of persistent links.  -1 means no limit.
mysql.max_persistent = -1

; Maximum number of links (persistent + non-persistent).  -1 means no limit.
mysql.max_links = -1

kunne forestille mig at der måske er sat en for lav grænse på max_links (evt. i forhold til max_persistent)
Avatar billede dmcn Praktikant
12. august 2002 - 15:39 #3
Lad mig gætte - cliche.dk? Ring og brok dig, og ring så igen. De har store MySQL-problemer for tiden.
Avatar billede dmcn Praktikant
12. august 2002 - 15:40 #4
barlach : Det er ikke nødvendigt at lukke med mysql_close(); med mindre du vil connecte til 2 databaser på samme side. Når scriptet er kørt igennem lukker PHP selv for forbindelsen.
Avatar billede tipsen Nybegynder
12. august 2002 - 15:40 #5
Mener ikke at der er understøttelse for persistent links, hvis php kører som cgi.
12. august 2002 - 15:41 #6
barlach >> Ja, den er indsæt på alle sider. Men jeg havde også samme problem før, jeg indsætte den.

tipsen desværres har jeg ikke adgang til den :/.

n0rmality - ja, desværre - det køre ikke ret godt...
Avatar billede barlach Nybegynder
12. august 2002 - 15:44 #7
n0rmality>> ved det, men har selv haft samme problem når jeg laver mange db-kald lige efter hinanden, og løste det ved at sætte en close på.
Ved ikke hvorfor det nogen gange bliver nødvendigt men det virkede
Avatar billede fangel Nybegynder
12. august 2002 - 15:47 #8
n0rmality => jep, Cliche har ret store problemer med MySQL... for selv samme fejl, det hjælper dog at reloade... af en eler andre grund hjælper det...
Avatar billede barlach Nybegynder
12. august 2002 - 15:47 #9
...jeg satte den ind efter hvert db-kald og det løste problemet
Avatar billede dmcn Praktikant
12. august 2002 - 15:49 #10
barlach : Åbner du forbindelse til MySQL for hvert kald, eller?
Avatar billede jakoba Nybegynder
12. august 2002 - 15:51 #11
fejlen er at der er formange mennesker der kikker på dine sider.
Gør dem grimmere og mere ubrugelige :-))

mpår php installeres bliver der stillet et antal connections til rådighed for php, og der kan ikke være flere end det antal connections åbne samtidig.
når brovseren spørger efter en side optager det en connection indtil den side er hentet færdig.
hvis browseren samtidig spørger efter 2 billeder optages yderligere 2 connections indtil billederne er hentet.
en almindelig browser har lov at bruge ca 10 connections på een gang (dvs have 10 udestående requests)

på samme måde bliver der brugt connections når php-serveren sender en request til mysql-serveren (selvom de ligger på samme maskine)

så hvis 10 mennesker prøver at kikke kan de optage 10 browserconnections og 10 mysql connections hver, evt flere hvis du fx har flere mysql databaser åbne på en gang og bruger persistent connections.

Det løber op.

den dårlige løsning:
  tildel nogle flere connections til php (og evt også til mysql-serveren).

den gode løsning.
  luk filer og mysql connections såsnart du er færdig med at bruge dem.
  lad være med at bruge persistent connections
  sørg for at alting loader hurtigt.

mvh JakobA
Avatar billede barlach Nybegynder
12. august 2002 - 15:53 #12
ja, det blev jeg nød til i det tilfælde...ved godt det lyder usmart men det fik det til at virke. Har også haft problemet med odbc_conn hvor samme trick virkede.

Der findes sikkert en smartere måde at løse det på men jeg anede ikke hvorfor det kom så derfor blev jeg lidt desperat tilsidst..
Avatar billede dmcn Praktikant
12. august 2002 - 15:55 #13
barlach : Smid mysql-connect'en i en fil for sig, og include den i toppen af alle sider hvor du skal bruge MySQL - simple. :)
Avatar billede intel4004 Novice
13. august 2002 - 10:09 #14
Jeg er webmaster for en side på cliche.dk og jeg oplever "too many connections" hele tiden. Jeg includerer functions.php hvor en function open_mysql(); køres hvergang jeg skal bruge mysql, og lukker med det samme igen med mysql_close();

Men er dette forkert?

Intel4004
Avatar billede jakoba Nybegynder
13. august 2002 - 11:32 #15
intel4004 >> jeg ville sige det var helt rigtig. Ved at lukke hurtigst muligt frigiver du den connection igen så andre kan bruge den imens du laver andre ting.
Avatar billede intel4004 Novice
13. august 2002 - 13:29 #16
jakoba> Jeg er endnu lidt blød endnu i de helt basale ting. Men kan jeg godt lukke for mysql-adgangen efter mysql_query? Når jeg henter data ud, bruger jeg:

$GetData = Mysql_query("SELECT bla bla");

Og herefter skal mysql_fetch_array tit bruge $GetData, men kan jeg lukke mysql-adgangen før while-løkken(når jeg henter flere rækker)...??

Jeg fandt det her i mysql hjælp:

If you get the error Too many connections when you try to connect to MySQL, this means that there is already max_connections clients connected to the mysqld server.

If you need more connections than the default (100), then you should restart mysqld with a bigger value for the max_connections variable.

Intel4004
Avatar billede jakoba Nybegynder
13. august 2002 - 14:42 #17
Mej, så emsig duer det heller ikke at være. hvis du ved du skal bruge mySQL igen om et øjeblik er det for dyrt at nedleægge forbindelsen og oprette den igen hver gang.
Det er som sædvanlig et balancenummer.
når du er færdig med at bruge mysql så luk ( med:
    mysql_close($conn);
) så du får nedlagt den forbindelse su oprettede med 
    $conn = mysql_connect($server, $brugernavn, $password);

check i din løkke om du bruger meget tid til efterbehandling. måske kan du flytte den tid ud af løkken ved blot at samle de data du henter ind i et array før du henter flere fra mysql. når så alle data er hentet kan du lukke mysql og bruge dine data udaf arrayet.

men efter hvad alle de andre har sagt lyder det nu også som cliche er rimeligt nærig med at tildele connections. prøv også at sparke lidt til dem. ( blidt :-)

mvh JakobA
Avatar billede intel4004 Novice
13. august 2002 - 15:58 #18
jakoba> Jamen skal mysql_fetch_array() bruge en forbindelse til Mysql eller kan man godt lukke efter mysql_query() er udført? Mysql_fetch_array() kigger vel kun i den ressource id man har tildelt søgningen med mysql_query(), eller hvad???

Intel4004
Avatar billede jakoba Nybegynder
13. august 2002 - 16:04 #19
det er jeg ikke sikker på. det kommer an på om den 'mysqlresource' man får retur fra kaldet ligger i sit eget dataareal, eller om det bliver lagt i det bufferområde der oprettes i forbindelse med en connect.

prøv, og se om det duer.
22. august 2002 - 21:39 #20
Jeg takker - hvis i andre ønsker point så er det admin@enter-s.dk i kan kontakte mig på.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester