Voici comment optimiser le nombre de connexions :
- Assurez-vous que vous êtes no en utilisant une connexion persistante n'importe où. C'est le moyen le plus simple de perdre la trace des connexions ouvertes et la raison la plus fréquente pour laquelle il n'y a plus de connexions disponibles. Dans mysqli, la connexion persistante est ouverte en ajoutant le préfixe
p:
au nom d'hôte lors de la connexion.
- Assurez-vous que vous n'ouvrez qu'une seule connexion pour chaque requête HTTP. Ne les ouvrez pas et ne les fermez pas, car cela peut rapidement devenir incontrôlable et avoir un impact négatif sur les performances de votre application. Disposez d'une connexion globale unique que vous transmettez aux fonctions qui en ont besoin.
- Optimisez vos requêtes afin qu'elles soient traitées plus rapidement et qu'elles libèrent la connexion plus vite. Cela s'applique également à l'optimisation des index et à l'élimination du problème N+1. (Par expérience, je peux dire que PDO aide beaucoup à remanier votre code pour éviter les requêtes mal conçues).
- Si vous devez effectuer d'autres tâches exigeant du temps dans le même processus, effectuez d'abord toutes vos opérations SQL, puis fermez la connexion. Il en va de même pour l'ouverture de la connexion. N'ouvrez la connexion que lorsque vous savez que vous en aurez besoin.
Si vous rencontrez un problème de dépassement de la limite "max_user_connections", cela signifie que votre serveur web n'est pas configuré correctement. Dans un scénario idéal, la connexion MySQL serait illimitée, mais dans le cadre d'un hébergement mutualisé, cette limitation doit être mise en place pour protéger les ressources contre les abus (qu'ils soient accidentels ou intentionnels). Cependant, le nombre de connexions MySQL disponibles doit correspondre au nombre de threads disponibles sur le serveur. Il s'agit d'un sujet très controversé, mais je dirais que si votre application doit effectuer une opération SQL à chaque requête, le nombre de connexions serveur disponibles ne doit pas dépasser le nombre de connexions MySQL disponibles. Sur Apache, vous pouvez calculer le nombre de connexions possibles comme indiqué dans ce lien.
Sur une application raisonnablement conçue, même avec 15 connexions MySQL simultanées, vous devriez toujours être en mesure de gérer un nombre satisfaisant de requêtes par seconde. Par exemple, si chaque requête prend 100 ms, vous pouvez traiter 150 requêtes par seconde.