J'ai une table assez grande (1 million de lignes) et ma base de données est bloquée sur un autovacuum (> 30 minutes) sur la présente table, ce qui entraîne une cachet de toute la base de données. L'application ne se chargea même pas maintenant.
-00:37:31.137859 autovacuum: VACUUM public.users
SELECT n_tup_del, n_tup_upd FROM pg_stat_all_tables WHERE relname = 'users';
Ce sont mes paramètres Autovacuum sur la table des utilisateurs:
autovacuum_vacuum_scale_factor=0.0,
autovacuum_vacuum_threshold=5000,
autovacuum_analyze_scale_factor=0.0,
autovacuum_analyze_threshold=5000
Ces paramètres suggérés que j'ai utilisés à partir de Slow Slow PostgreSQL Performance? N'oubliez pas d'aspirer votre base de données
Est-ce que je dois juste l'attendre? Quelles sont mes options?
Mise à jour
J'ai mis à niveau vers Postgres 9.5 et j'ai également augmenté mes IOPS RDS à 900 et que le processus de vide matine toujours les iops et ne peut rien faire d'autre dans la base de données. Le processus fonctionnait pendant un point 1 jour avant la mise à niveau.
J'ai également supprimé les paramètres d'autovacuum personnalisés que j'ai eues, et maintenant simplement utiliser la valeur par défaut.
Voici une attachement des résultats de ces requêtes;
SELECT * FROM pg_stat_activity;
SELECT * FROM pg_stat_database;
SELECT * FROM pg_stat_user_tables;
SELECT * FROM pg_stat_user_indexes;
SELECT * FROM pg_locks;
VACUUM
_ Processus lancés par Autovacuum peut être tué en toute sécurité avec:
SELECT pg_terminate_backend(PID_of_backend);
En fait, tout processus client dans PostgreSQL peut être résilié de cette façon. Les travaux non engagés par ce backend seront simplement supprimés.
Vous pouvez ensuite réexécuter VACUUM
manuellement à un temps de circulation bas:
VACUUM VERBOSE users;
Vérifiez si Délai de vide basé sur des coûts peut vous aider. Cela limiterait la quantité d'E/S que votre processus Autovacuum utilise.
Peut-être que vous frappez simplement votre limite d'iops. Vous devriez être capable de voir les chiffres sur l'interface AWS. Sur l'utilisation de Linux autonome iostat -dtkxy 10
Pour mesurer les E/S. (iostat
est généralement emballé dans sysstat
paquet).
Peut-être que le VACUUM
recommence si souvent à cause des paramètres agressifs de votre config.