Migré mi aplicación PHP a un modelo sin servidor donde el proveedor de la nube limita la cantidad de conexiones activas entre una instancia de contenedor y el servidor MySQL. A veces, durante la semana, se supera este límite de 100 conexiones activas a MySQL por instancia de contenedor. La biblioteca de cliente SQL utilizada en PHP es Medoo, una abstracción de PDO, usamos PHP 7.3 y Slim Framework 3.
Al comprobar MOSTRAR LISTA DE PROCESOS; desde el servidor MySQL, es posible ver varias conexiones que ya son antiguas y están en estado de suspensión, ¿por qué no se cerraron? De acuerdo con la documentación de PDO, PHP cierra las conexiones de MySQL al finalizar el script, ¿hay alguna excepción en esta condición de "finalizar script"? ¿Cuándo termina el guión? ¿Hay alguna configuración de Apache o PHP que pueda estar evitando esto y causando el problema?
Después de contextualizarte, el lector, al problema. Mi pregunta es: ¿Qué podría estar causando esto? ¿Hay alguna configuración en PHP o Apache que pueda estar relacionada con el problema? ¿A qué debo prestar atención en el código? ¿Qué intentarías?
Y no, no hemos establecido conexiones persistentes.
Desafortunadamente, PDO no tiene ninguna funcionalidad para configurar los límites de conexión.
Para manejar las conexiones de db, GCP proporciona en su documentación oficial algunas buenas prácticas para administrarlo.
En resumen, sugiero probar las siguientes cosas: