La risposta sembra essere l'aggiunta delle seguenti voci in my.cnf sotto [mysqld]:
wait_timeout=60
interactive_timeout=60
L'ho trovato qui (fino in fondo):http://community.livejournal.com/mysql/82879.html
Il tempo di attesa predefinito per terminare una connessione non aggiornata è di 22800 secondi. Per verificare:
mysql> show variables like 'wait_%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 60 |
+---------------+-------+
EDIT:ho dimenticato di menzionare, ho anche aggiunto quanto segue al mio /etc/sysctl.conf:
net.ipv4.tcp_fin_timeout = 15
Questo dovrebbe aiutare ad abbassare la soglia che il sistema operativo attende prima di riutilizzare le risorse di connessione.
EDIT 2:/etc/init.d/mysql reload non ricaricherà davvero il tuo my.cnf (vedi il link sotto)
È possibile che i pool di connessione siano configurati in modo errato per mantenere troppe connessioni e stanno trattenendo troppi processi inattivi.
A parte questo, tutto ciò a cui riesco a pensare è che un pezzo di codice trattiene un set di risultati, ma sembra meno probabile. Per rilevare se si tratta di una query lenta che sta scadendo, puoi anche impostare MySQL in modo che scriva in un registro di query lento nel file conf e quindi scriverà tutte le query che impiegano più di X secondi, l'impostazione predefinita è 10 secondi.