Ottenere più query con "mostra il livello di isolamento delle transazioni" in pg_activity


10

Sto usando il server PostgreSQL per il mio uso in produzione.

Quando lancio una query come

select * from pg_stat_activity

sul mio server, sto ricevendo il 98% di query come

SHOW TRANSACTION ISOLATION LEVEL

e il mio server accetta solo 100 connessioni, quindi non sono in grado di procedere oltre.

Perché sta succedendo? Come posso bloccare tutte queste domande?


4
Postgres non crea connessioni da solo. È l'applicazione che crea tali connessioni ed esegue tali query. Forse un pool di connessioni o qualcosa di simile.
a_horse_with_no_name

2
Stai eseguendo un'applicazione Java? Usi HikariCP o forse un'altra opzione di pool di connessioni? Sto usando HikariCP e vedo una cosa simile quando eseguo l'accesso psqle faccio select query from pg_stat_activity;... Mi chiedevo anche perché questo stesse accadendo; suppongo che questo sia un meccanismo attraverso il quale HikariCP mantiene le connessioni "fresche".
Chris W.

Risposte:


2

Se ci sono; sono lì, ma non sono usciti magicamente dal nulla. Anche se mi piacerebbe che tu tornassi e ci dicessi cosa fossero nel tuo caso, di solito è una delle due cose,

  1. Pool di connessioni
  2. Astrazione ORM o SQL

A volte questi ragazzi si connettono e avviano transazioni vuote o preparano una transazione. È sempre il risultato di una cattiva libreria. È scusabile se la libreria è nuova o nuova nel database. Se la biblioteca ha anni e lo sto facendo, sospetto che non abbiano troppi occhi su di esso e guardino le alternative.

Dai commenti,

Postgres non crea connessioni da solo. È l'applicazione che crea tali connessioni ed esegue tali query. Forse un pool di connessioni o qualcosa di simile. - a_horse_with_no_name 10 settembre 13 alle 9:03

Stai eseguendo un'applicazione Java? Usi HikariCP o forse un'altra opzione di pool di connessioni? Sto usando HikariCP e vedo una cosa simile quando accedo a psql e seleziono query da pg_stat_activity; ... Mi chiedevo anche perché questo stesse accadendo; suppongo che questo sia un meccanismo attraverso il quale HikariCP mantiene le connessioni "fresche". - Chris W. 16 gennaio 16 alle 19:22

Mentre è possibile, è un tentativo di mantenere una connessione "fresca", il modo kosher per farlo è qualcosa del genere

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

È possibile che si desideri presentare una segnalazione di bug per utilizzare tale metodo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.