La respuesta parece ser agregar las siguientes entradas en my.cnf bajo [mysqld]:
wait_timeout=60
interactive_timeout=60
Lo encontré aquí (en la parte inferior):http://community.livejournal.com/mysql/82879.html
El tiempo de espera predeterminado para eliminar una conexión obsoleta es de 22800 segundos. Para verificar:
mysql> show variables like 'wait_%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 60 |
+---------------+-------+
EDITAR:Olvidé mencionar, también agregué lo siguiente a mi /etc/sysctl.conf:
net.ipv4.tcp_fin_timeout = 15
Se supone que esto ayuda a reducir el umbral que el sistema operativo espera antes de reutilizar los recursos de conexión.
EDIT 2:/etc/init.d/mysql reload realmente no recargará su my.cnf (consulte el enlace a continuación)
Es posible que los grupos de conexiones estén mal configurados para retener demasiadas conexiones y retengan demasiados procesos inactivos.
Aparte de eso, todo lo que puedo pensar es que algún fragmento de código se aferra a un conjunto de resultados, pero eso parece menos probable. Para detectar si se trata de una consulta lenta que está agotando el tiempo de espera, también puede configurar MySQL para escribir en un registro de consulta lenta en el archivo conf, y luego escribirá todas las consultas que toman más de X segundos, el valor predeterminado es 10 segundos.