Cette rubrique décrit les principes et l'utilisation de la fonctionnalité de protection contre la surcharge.
Contexte
Dans les scénarios à forte concurrence, tels que les événements promotionnels, les ressources CPU du nœud principal risquent la saturation. Pour résoudre ce problème, il faut généralement augmenter la capacité de la base de données (mise à niveau). Toutefois, le changement de spécification peut entraîner des interruptions transitoires ou une chute brutale des performances. Dans ce cas, toutes les requêtes sont acheminées vers le nœud principal, ce qui provoque une surcharge du CPU et affecte la continuité et la stabilité du service. Pour atténuer cette situation, PolarDB for MySQL introduit la fonctionnalité de protection contre la surcharge au niveau du proxy de base de données. Cette fonctionnalité protège le nœud principal en limitant le nombre de requêtes simultanées lorsque tous les nœuds en lecture seule sont défaillants, garantissant ainsi la disponibilité globale du service.
Limites
Cette fonctionnalité nécessite PolarProxy version 2.8.1 ou ultérieure et prend en charge PolarDB for MySQL 5,6, 5,7 et 8,0.
Cette fonctionnalité ne prend actuellement en charge que les endpoints en lecture/écriture.
La protection contre la surcharge ne se déclenche que lorsque tous les nœuds en lecture seule sont défaillants (panne ou interruption de la réplication avec la base de données principale). Les autres scénarios ne sont pas pris en charge pour le moment.
Notes d'utilisation
Dans la section Cluster Endpoint de la page Overview, cliquez sur Configure pour ouvrir la page Modify Endpoint Settings, puis activez Overload Protection.
Fondée sur l'algorithme du seau qui fuit (leaky bucket), cette fonctionnalité limite proactivement les requêtes simultanées vers le cluster lorsque PolarProxy détecte que tous les nœuds en lecture seule sont défaillants, afin de protéger la base de données principale. La limitation est levée lorsque les nœuds en lecture seule récupèrent ou après l'expiration du délai (60 secondes par défaut).
Pour définir la limite de throttling, les clusters PolarDB for MySQL sélectionnent une plage appropriée basée sur les données historiques. Lorsque le cluster fonctionne normalement, PolarProxy enregistre les échantillons de comptage des requêtes simultanées du nœud principal sur les dernières 24 heures.
Lorsque la protection contre la surcharge est déclenchée, PolarProxy utilise la médiane des données historiques comme limite supérieure pour limiter les connexions actives.
Exemple
Lors d'un test, l'interruption de la réplication sur tous les nœuds en lecture seule déclenche la protection contre la surcharge. Le trafic continue d'entrer pendant cette période, mais n'augmente pas davantage.
Une fois que les nœuds en lecture seule ont récupéré, la protection contre la surcharge prend fin et le trafic est transféré normalement.
