PDA

Bekijk Volledige Versie : SQL Too many connections



snaaps
15/07/05, 12:20
Ik krijg de laaste dagen regelmatig de melding Too many connections.

Nu vraag ik me af, is dit een geheuegen probleem of een cpu probleem?

p.s waar vindt ik de logfile van MySQL?
(fedora core3)

Frangkje
15/07/05, 12:42
Dat is een instelling probleem, je kunt in mysql instellen hoeveel connecties hij open mag hebben staan (standaard 150 geloof ik) en als je daar overheen gaat krijgt de 150+e connectie deze melding.

xserve
15/07/05, 12:50
Dat is een probleem in de scripting van je webapplicaties. Als je een verbinding opent moet je hem in dat zelfde script ook sluiten. Als je dat niet doet dan blijft die verbinding open staan tot dat hij time-out. Bijvoorbeeld 5 minuten. Als er dan in die 5 minuten zo vaak dat script wordt opgeroepen heb je een probleem. Want dan staan er te veel connecties open.

Het kan ook liggen aan je instellingen inderdaad. Maar meestal is het bovenstaand probleem.

snaaps
15/07/05, 13:02
dat probleem hebben wij idd van der week ook gehad op een andere server. De conneties werden niet correct af gesloten.

Kan je dit instellen? ik bedoel de maximale tijd? en hoeveel tijd is aan te raden?
ik neem aan dit ik dit in php.ini kan instellen?

Triloxigen
15/07/05, 13:12
Origineel geplaatst door xserve
Dat is een probleem in de scripting van je webapplicaties. Als je een verbinding opent moet je hem in dat zelfde script ook sluiten. Als je dat niet doet dan blijft die verbinding open staan tot dat hij time-out. Bijvoorbeeld 5 minuten. Als er dan in die 5 minuten zo vaak dat script wordt opgeroepen heb je een probleem. Want dan staan er te veel connecties open.

Bij PHP is dit niet het geval, aan het ined van het script wordt de MySQL connectie automatisch gesloten.

Aantal MySQL connecties kan in php.ini ingesteld worden maar volgens mij ook in de MySQL daemon, maar daar twijfel ik nu even over.

luser
15/07/05, 13:39
my.cnf (kan ook my.cf noemen dachtik), daar stel je MySQL zaken in, ik post zodadelijk nog het juiste regeltje

EDIT:
max_connections = 1000000

EDIT2:
Moet onder de [mysqld] komen.

EDIT3:
Je kan dat verhogen naargelang je wilt, let wel op CPU & MEM gebruik.

Frangkje
15/07/05, 13:39
Volgens mij moet je het zelfs in mysql.cf aanpassen en kan het niet eens in php.ini :)

Wido
15/07/05, 13:56
Het MOET in de my.cnf

Je kan wait-timeout op 20 sec zetten zodat niet afgesloten connecties sneller dood gaan.

wv-
15/07/05, 14:43
tipje:

my.cfg:

set-variable = max_user_connections=xxx
set-variable = max_connections=xxx

met max_connections > max_user_connections, zodat 1 user nooit alle mysql connecties kan innemen.

max_connections wat hoger zetten kan ook helpen als er gebruik gemaakt wordt van persistent mysql connecties.

crazycoder
15/07/05, 14:44
Origineel geplaatst door xserve
Dat is een probleem in de scripting van je webapplicaties. Als je een verbinding opent moet je hem in dat zelfde script ook sluiten. Als je dat niet doet dan blijft die verbinding open staan tot dat hij time-out. Bijvoorbeeld 5 minuten. Als er dan in die 5 minuten zo vaak dat script wordt opgeroepen heb je een probleem. Want dan staan er te veel connecties open.

Gebruik van connect vs pconnect in het script.... mysql_close sluit overigens een met pconnect opgebouwde verbinding niet. Als jij er anders over denk check het dan eerst maar in de handleiding.

E.e.a. MOET zeker niet in my.cnf in worden gesteld. Google maar eens op het probleem en je zie een keur aan oplossingen.

snaaps
15/07/05, 15:42
bedankt voor al jullie handige tips!
ga er vanavond even naar kijken, maar ga nu eerst even mijn parnters verjaardag vieren.

xserve
15/07/05, 18:23
crazycoder: Ik weet niet precies hoe het werkt. Ik weet alleen dat dit best vaak de oplossing is voor dit probleem. Ik sluit zelf altijd alle connecties af, hoe de rest werkt geen idee.