Citat:
Ursprungligen postat av radioaktivitet
Citat:
Originally posted by -Jonas@Feb 9 2009, 15:38
Citat:
Ursprungligen postat av radioaktivitet
När jag kikar i processlistan så finns där inget särskilt. Men det intressanta är ju att se processlistan precis i samma ögonblick som jag får felet.
Men. Efterssom jag inte får någon connection så kan jag inte fråga show processlist just då. Moment 22. Eller?
max_connections är 100
thread_cache_size är 0 (verkar vara default)
|
thread_cache_size innehåller en cache med föregående anslutningar, alltså anslutningen sker snabbare om denna är aktiverad.
http://www.sitebuddy.com/MySQL/thread_cach...ead_concurrency
Han förklarar hur du skall räkna ut värdet här.
Citat:
Det är mycket trafik. Vet ej hur man kollar timeout.
|
Timeout är ett argument du ger i mysql_connect()
|
Threads_created/Connections blir i mitt fall 6355823 / 6490174 = 0,979299.
Är inte säker på hur jag skall tolka det.
Max_used_connections är 101. Bör jag sätta thread_cache_size till 101? Hur vet jag om min burk pallar det?
Ang. thread_concurrency så har jag inte den variabeln ö.h.t. Kör mysql 5.0.51a. Kanske är den variabeln borttagen?
Ang. timeout. så säger dokumentationen
Citat:
resource mysql_connect *([ string $server=ini_get("mysql.default_host") *[, string $username=ini_get("mysql.default_user") *[, string $password=ini_get("mysql.default_password") *[, bool $new_link=false *[, int $client_flags=0 *]]]]] )
|
Vilket värde är timeout? Idag anger jag bara server, username och password. Resten är default. Vad rekommenderar ni?
|
Öka thread_cache_size steg för steg tills threads_created inte längre stiger i rask takt vid normal belastning. Se till att burken inte börjar svara långsammare under tiden.
För att komma tillrätta med eventuellt problem vid detta tillfälle kan en bra start vara att aktivera slow query log med slow query time på 1s eller så. Ett bättre alternativ skulle vara att skapa en användare med SUPER privilegier som du loggar in manuellt eller automatiskt en gång i minuten och dumpar processlist om used connections ligger på 101 (1 anslutning reserveras för sådana användare, av just anledningen att kunna se och åtgärda problem).
Timeout för php-anslutningen kan du sätta med php.ini alternativt ini_set och heter mysql.connect_timeout. Den är dock default på 5/10/60s beroende på php-version så den är snarare för högt satt om något - om den inte är ändrad.
thread_concurrency fungerar bara under Solaris, så det är förmodligen inte aktuellt (?). Det finns dock en innodb_thread_concurrency också men den köar inte upp något vid anslutningstillfället.