J'utilise une machine open source (RHEL 6.2) exécutant le logiciel SIEM. Lorsque j'exécute la top
commande, je vois postgres
et les postmaster
deux avec 96% d'utilisation du processeur. Existe-t-il un moyen de localiser ou de voir ce qui provoque l'empilement de ces services?
postgresql
asadz
la source
la source
postgress
est -postgres
et vous venez de copier à la main.Réponses:
Vous pouvez faire correspondre un ID de backend Postgres spécifique à un ID de processus système à l'aide de la
pg_stat_activity
table système.SELECT pid, datname, usename, query FROM pg_stat_activity;
peut être un bon point de départ.Une fois que vous savez quelles requêtes sont en cours d'exécution, vous pouvez enquêter davantage (
EXPLAIN
/EXPLAIN ANALYZE
; vérifier les verrous, etc.)la source
WHERE
clause, mais si vous n'avez pas un grand nombre de PID, c'est tout comme facile à rechercher à travers la sortie complète. Le manuel de Postgres contient des détails supplémentaires sur ce que vous pouvez retirerpg_stat_activity
, ainsi que les autres tableaux de statistiques (qui peuvent vous aider si votre problème n'est pas une requête utilisateur).J'avais le même problème. Le postgresql est installé sur AWS RDS et il avait une utilisation de 100% du processeur même après l'augmentation de l'instance. J'ai débogué avec la méthode présentée ici et l'une des méthodes a fonctionné pour moi.
J'ai vérifié la requête en cours d'exécution le plus longtemps et j'ai appris que certaines requêtes étaient bloquées et fonctionnaient depuis plus de 3 à 4 heures. Pour vérifier depuis combien de temps la requête s'exécute, exécutez la commande suivante:
Si c'est plus d'une heure, alors c'est le problème. Tuez la connexion longue durée et limitez l'âge maximum de la connexion du côté de l'application.
la source
Si c'est vraiment le maître de poste qui utilise tout ce CPU, alors vous avez probablement des problèmes de contention de verrouillage, probablement en raison d'un niveau très élevé
max_connections
. Envisagez d'abaissermax_connections
et d'utiliser un pool de connexions si tel est le cas.Sinon: Détails, s'il vous plaît. Sortie complète de
top -b -n 1
pour commencer.la source