web-dev-qa-db-fra.com

Utilisation du processeur constamment élevée après la mise à niveau de Postgres 9.5 vers 9.6 vers 10.6

J'ai mis à niveau mon instance RDS (db.t2.medium) de Postgres 9.5 à 9.6 il y a quelques jours. Depuis la mise à niveau, l'utilisation du processeur était presque à 100% tout le temps. Cela a fait tomber ma demande. En supposant que le problème est avec la version 9.6, j'ai fait une autre mise à niveau vers 10.6. Il s'est amélioré mais toujours considérablement supérieur à l'utilisation du processeur pour la version 9.5 d'origine.

Je n'ai pas changé le code d'application lors de la mise à niveau. Comment puis-je vérifier la raison de l'augmentation de l'utilisation du processeur et éventuellement y remédier?

enter image description here

6
ANALYZE VERBOSE;

Vous devez exécuter une requête ANALYSER sur toute la base de données à l'aide de la commande ci-dessus.

Le problème est que les plans de requête générés par postgres sont optimisés pour la version précédente de postgres, lorsque vous effectuez une mise à jour RDS, cela ne régénère pas implicitement ces plans, cela doit être fait manuellement (je suis sûr qu'il y a une raison pour laquelle AWS ne fait pas ne le faites pas manuellement mais je ne sais vraiment pas pourquoi).

Dans mon cas, j'ai vu environ une semaine d'utilisation extrêmement élevée du processeur, tout comme dans votre cas, puis après avoir exécuté ANALYZE, mon processeur est revenu à sa ligne de base précédente. Comme vous pouvez le voir dans l'image ci-dessous, la mise à niveau (dans mon cas de 9.4 à 9.5) a été exécutée le 27/11, la requête d'analyse a été exécutée le 12/02.

(Le VERBOSE n'est pas strictement nécessaire mais il est utile de pouvoir suivre la progression de la commande)

Postgres RDS CPU usage over the course of a week

5
tannart