Timeout:VacuumDelay - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Timeout:VacuumDelay

L'événement Timeout:VacuumDelay indique que la limite de coût des E/S du processus vacuum a été dépassée et que le processus vacuum a été mis en veille. Les opérations vacuum s'arrêtent pendant la durée spécifiée dans le paramètre de délai de coût correspondant, puis le processus reprend. Pour la commande vacuum manuelle, le délai est spécifié dans le paramètre vacuum_cost_delay. Pour le démon autovacuum, le délai est spécifié dans autovacuum_vacuum_cost_delay parameter.

Versions de moteur prises en charge

Ces informations sur les événements d'attente sont prises en charge pour toutes les versions de RDS for PostgreSQL.

Contexte

PostgreSQL possède à la fois un démon autovacuum et une commande vacuum manuelle. Le processus autovacuum est « activé » par défaut pour les instances de base de données RDS for PostgreSQL. La commande vacuum manuelle est utilisée selon les besoins, par exemple pour purger les tables des tuples morts ou générer de nouvelles statistiques.

Lorsque le processus vacuum est en cours, PostgreSQL utilise un compteur interne pour suivre les coûts estimés au fur et à mesure que le système effectue les diverses opérations d'E/S. Quand le compteur atteint la valeur spécifiée par le paramètre de limite de coût, le processus exécutant l'opération est en veille pendant la brève durée spécifiée dans le paramètre de délai de coût. Il réinitialise ensuite le compteur et poursuit les opérations.

Le processus vacuum comporte des paramètres qui peuvent être utilisés pour réguler la consommation de ressources. Le processus autovacuum et la commande vacuum manuelle ont leurs propres paramètres pour définir la valeur limite de coût. Ils ont également leurs propres paramètres pour spécifier un délai de coût, c'est-à-dire le temps alloué pour mettre en veille le processus vacuum quand la limite est atteinte. De cette manière, le paramètre de délai de coût fonctionne comme un mécanisme de limitation de la consommation de ressources. Les listes suivantes contiennent les descriptions de ces paramètres.

Paramètres affectant la limitation du démon autovacuum
  • autovacuum_vacuum_cost_limit – Spécifie la valeur limite de coût à utiliser dans les opérations vacuum automatiques. L'augmentation de la valeur de ce paramètre permet au processus vacuum d'utiliser davantage de ressources et réduit l'événement d'attente Timeout:VacuumDelay.

  • autovacuum_vacuum_cost_delay – Spécifie la valeur de délai de coût à utiliser dans les opérations vacuum automatiques. La valeur par défaut est de 2 millisecondes. La définition du paramètre de délai sur 0 désactive le mécanisme de limitation, si bien que l'événement d'attente Timeout:VacuumDelay n'apparaîtra pas.

Pour plus d'informations, veuillez consulter Action Vacuum automatique dans la documentation PostgreSQL.

Paramètres affectant la limitation du processus vacuum manuel
  • vacuum_cost_limit – Le seuil à partir duquel le processus vacuum est mis en veille. Par défaut, cette limite est de 200. Ce nombre représente les estimations des coûts cumulés pour les E/S supplémentaires requises par les diverses ressources. L'augmentation de cette valeur réduit le nombre d'événements d'attente Timeout:VacuumDelay.

  • vacuum_cost_delay – La durée pendant laquelle le processus vacuum est en veille quand la limite de coût du processus vacuum est atteinte. La valeur par défaut est 0, ce qui signifie que cette fonctionnalité est désactivée. Vous pouvez définir une valeur entière pour spécifier le nombre de millisecondes nécessaires à l'activation de cette fonctionnalité, mais nous vous recommandons de conserver la valeur par défaut.

Pour plus d'informations sur le paramètre vacuum_cost_delay, consultez Consommation des ressources dans la documentation PostgreSQL.

Pour en savoir plus sur la configuration et l'utilisation d'autovacuum avec RDS for PostgreSQL, consultez Utilisation de la fonction autovacuum de PostgreSQL sur Amazon RDS for PostgreSQL.

Causes probables de l'augmentation du nombre d'événements d'attente

Le paramètre Timeout:VacuumDelay est affecté par l'équilibre entre les valeurs des paramètres de limite de coût (vacuum_cost_limit, autovacuum_vacuum_cost_limit) et les paramètres de délai de coût (vacuum_cost_delay, autovacuum_vacuum_cost_delay) qui contrôlent la durée de veille du processus vacuum. L'augmentation d'une valeur de paramètre de limite de coût permet d'utiliser davantage de ressources pour le processus vacuum avant qu'il soit mis en veille. Cela se traduit par une diminution des événements d'attente Timeout:VacuumDelay. L'augmentation de l'un ou l'autre des paramètres de délai entraîne une hausse de la fréquence et de la durée de l'événement d'attente Timeout:VacuumDelay.

Le réglage du paramètre autovacuum_max_workers peut également augmenter les nombres de Timeout:VacuumDelay. Chaque processus de travail autovacuum supplémentaire contribue au contre-mécanisme interne, de sorte que la limite peut être atteinte plus rapidement qu'avec un seul processus de travail autovacuum. Comme la limite de coût est atteinte plus rapidement, le délai de coût entre en vigueur plus fréquemment, ce qui se traduit par un plus grand nombre d'événements d'attente Timeout:VacuumDelay. Pour plus d'informations, consultez autovacuum_max_workers dans la documentation PostgreSQL.

Les objets volumineux, de 500 Go ou plus, déclenchent également cet événement d'attente, car le traitement des objets volumineux par le processus vacuum peut prendre un certain temps.

Actions

Si les opérations vacuum se terminent comme prévu, aucune correction n'est requise. En d'autres termes, cet événement d'attente n'indique pas nécessairement un problème. Il indique que le processus vacuum est mis en veille pendant la période spécifiée dans le paramètre de délai, afin que les ressources puissent être affectées à d'autres processus qui doivent être achevés.

Si vous souhaitez terminer plus rapidement les opérations vacuum, vous pouvez réduire les paramètres de délai. Cela raccourcit le temps de veille du processus vacuum.