Misslyckade databasanslutningar kan enligt min erfarenhet oftast bero på två saker:
1) Överbelastad databasserver
2) Du har långsamma SQL-frågor
Oftast är det en kombination av dessa, där du har en databasfråga som använder filesort och servern är belastad så att det är svårt att få tillgång att skriva till disk. Då kan databasfrågan ta evigheter att köra.
Men det kan även finnas andra databasfrågor som segar ner, till exempel frågor mot dåligt indexerade tabeller och/eller SELECT-frågor ur gigantiska tabeller utan index.
Jag vet inte hur de gör på andra webbhotell, men vi har en begränsning av hur många samtidiga anslutningar en användare får ha till databasen. Om denne då kör ovanligt långsamma frågor så kommer denna begränsning göra att skriptet aldrig får någon anslutning. Det står ett tag och väntar på att få en ledig anslutning, men när det gått tillräckligt lång tid ger det upp och skickar ett felmeddelande.
Om vi inte skulle ha denna begränsning av antalet samtidiga anslutningar skulle vi ofta ha problem med användare som överbelastar hela servern och stör andra användare. Med den nuvarande ordningen sänker man på sin höjd sin egen sajt, inte någon annans.
Alltså:
Börja med att ta reda på vilka databasfrågor du har som tar lång tid. Kör dessa frågor själv fast med EXPLAIN framför så att du får en bild av vad som händer. försök också se om det finns något mönster i när du inte får anslutningar, till exempel om det är en viss tid. Kontakta också webbhotellet och fråga om de har någon aning. Skicka med underlag i form av databasfrågor, tider och liknande.
Läs om hur du använder EXPLAIN här:
http://dev.mysql.com/doc/refman/5.0/...g-explain.html