web-dev-qa-db-fra.com

Google Cloud SQL PG11: impossible de redimensionner le segment de mémoire partagée

J'ai récemment mis à niveau une instance de Postgres 9.6 vers 11.1 sur Google Cloud SQL. Depuis lors, j'ai commencé à remarquer un grand nombre des erreurs suivantes dans plusieurs requêtes:

org.postgresql.util.PSQLException: ERREUR: impossible de redimensionner le segment de mémoire partagée "/PostgreSQL.78044234" en 2097152 octets: il ne reste plus d'espace sur l'appareil

D'après ce que j'ai lu, cela est probablement dû aux modifications apportées à PG10, et la solution typique consiste à augmenter la mémoire partagée de l'instance. À ma connaissance, cela n'est cependant pas possible sur Google Cloud SQL. J'ai également essayé de régler work_mem sans effet positif.

Cela peut ne pas avoir d'importance, mais pour être complet, l'instance est configurée avec 30 Go de RAM, 120 Go d'espace disque SSD HD et 8 CPU. Je suppose que Google fournirait un paramètre de mémoire partagée approprié pour ces spécifications, mais peut-être pas? Des idées?

[~ # ~] mise à jour [~ # ~] Définition de l'indicateur de base de données random_page_cost à 1 semble avoir réduit l'impact du problème. Ce n'est pas une solution complète, donc j'aimerais toujours obtenir une solution appropriée si une est là-bas. Le crédit revient à cet article de blog pour l'idée.

MISE À JOUR 2 Le rapport de problème d'origine a été fermé et un nouveau problème interne qui n'est pas visible par le public a été créé. Selon la réponse par e-mail d'un responsable de compte GCP, un correctif a été déployé par Google le 8/11/2019.

6
Nick

Vous pouvez envisager augmentation du niveau de l'instance , qui aura une influence sur la mémoire de la machine, les cœurs vCPU et les ressources disponibles pour votre instance Cloud SQL. Vérifier types de machines disponibles

Dans Google Cloud SQL PostgreSQL est également possible de changer drapeaux de base de données , qui ont une influence sur la consommation de mémoire:

  • max_connections: certaines ressources de mémoire peuvent être allouées par client, donc le nombre maximal de clients suggère l'utilisation maximale de la mémoire possible
  • shared_buffers: détermine la quantité de mémoire dédiée à PostgreSQL à utiliser pour la mise en cache des données
  • autovacuum - devrait être activé.

Je recommande d'abaisser les limites, pour réduire la consommation de mémoire.

1
Pawel Czuczwara