Obtention de plusieurs requêtes avec "show transaction isolation level" dans pg_activity

10

J'utilise le serveur PostgreSQL pour mon utilisation en production.

Quand je lance une requête comme

select * from pg_stat_activity

sur mon serveur, je reçois 98% des requêtes comme

SHOW TRANSACTION ISOLATION LEVEL

et mon serveur n'accepte que 100 connexions, je ne peux donc pas continuer.

Pourquoi cela arrive-t-il? Comment puis-je bloquer toutes ces requêtes?

Yogesh Prajapati
la source
4
Postgres ne crée pas de connexions par lui-même. C'est votre application qui crée ces connexions et exécute ces requêtes. Peut-être un pool de connexions ou quelque chose de similaire.
a_horse_with_no_name
2
Exécutez-vous une application Java? Vous utilisez HikariCP, ou peut-être une autre option de mise en commun des connexions? J'utilise HikariCP et je vois une chose similaire lorsque je me connecte psqlet que select query from pg_stat_activity;je fais ... Je me demandais également pourquoi cela se produisait; je suppose que c'est un mécanisme par lequel HikariCP maintient les connexions "fraîches".
Chris

Réponses:

2

S'ils sont là; ils sont là, mais ils ne sont pas sortis comme par magie. Bien que j'aimerais que vous reveniez nous dire ce que c'était dans votre cas, c'est généralement l'une des deux choses,

  1. Mise en commun des connexions
  2. Abstraction ORM ou SQL

Parfois, ces gars se connectent et commencent des transactions vides, ou préparent une transaction. C'est toujours le résultat d'une mauvaise bibliothèque. C'est excusable si la bibliothèque est nouvelle ou nouvelle dans la base de données. Si la bibliothèque a des années et que je fais ça, je soupçonne qu'ils n'ont pas trop d'yeux et qu'ils cherchent des alternatives.

D'après les commentaires,

Postgres ne crée pas de connexions par lui-même. C'est votre application qui crée ces connexions et exécute ces requêtes. Peut-être un pool de connexions ou quelque chose de similaire. - a_horse_with_no_name 10 septembre 13 à 9:03

Exécutez-vous une application Java? Vous utilisez HikariCP, ou peut-être une autre option de mise en commun des connexions? J'utilise HikariCP et je vois une chose similaire lorsque je me connecte à psql et que je sélectionne une requête dans pg_stat_activity; ... je me demandais également pourquoi cela se produisait; je suppose que c'est un mécanisme par lequel HikariCP maintient les connexions "fraîches". - Chris W.16 janv.16 à 19:22

Bien qu'il soit possible, c'est une tentative de garder une connexion «fraîche», la façon cachère de le faire est quelque chose comme ça

result = PQexec(imp_dbh->conn, "/* DBD::Pg ping test v3.6.0 */");

Vous voudrez peut-être déposer un rapport de bogue pour utiliser cette méthode à la place.

Evan Carroll
la source