![]() |
I 99,999% av fallen fungerar det bra att ansluta till min MySql server. Men sporadiskt så får jag följande fel
"Can't connect to MySQL server on '192.168.0.2' (1)" mysql_errno() returnerar "2003" Jag kör FreeBSD. Relativt nya versioner av både FreeBSD och MySQL. Systemet är inte särskilt lastat. Hur gör jag för att lista ur var problemet ligger? Jag är tacksam för all hjälp jag kan få! |
Kolla aktiva processer på mysqlservern med "SHOW PROCESSLIST", kika även på värdet för "max connections".
|
Som najk, kolla även hur många anslutningar varje thread kan hantera.
thread_cache_size skall du kika på. Ett tips generellt är att titta igenom hela din my.cnf fil. Där hittar du också max_connections Hur är anslutningen till maskinen? Alltså från webserver till mysqlserver? Är där ingen trafik? Har du låg timeout i anslutningen? |
Det var en gammal bugg i php som såg ut sådär förut, hade något att göra med dnsuppslagen, kolla om det hjälper att använda ipadress vid anslutning istället...
|
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) Citat:
Citat:
|
Citat:
http://www.sitebuddy.com/MySQL/thread_cach...ead_concurrency Han förklarar hur du skall räkna ut värdet här. Citat:
|
Du har ingen logg som säger mer då?
|
Citat:
Ä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:
|
Jag har fortfarande inte kommit så mycket längre än min senaste inlägg.
Man kan tycka att det borde finnas något verktyg där man kan mata in sina värden, och som spottar ur sig förslag på vilka variabler man skall ändra. |
På MySQL servern skulle du kunna installera mtop och kolla noga när andra inte kan ansluta, jag gissar på att du har fler anslutningar än servern tillåter (eftersom du har max_used_connections är 101, medans max_connections är 100).
På webbservern kan du köra ab och testa belasta din sida samtidigt som du kör mtop.. |
Citat:
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. |
Jag skulle nog också connecta till localhost. Borde inte vara någon större skillnad men det borde underlätta för att försöka göra en socks anslutning, och det är ju bra.
|
Clarence: Jag skall prova dina förslag på måndag. Tack!
studiox: Databasen ligger på en annan server än min webserver, så jag kan inte använda localhost. |
Citat:
|
Alla tider är GMT +2. Klockan är nu 00:07. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson