Получение нескольких запросов с «показом уровня изоляции транзакции» в pg_activity

10

Я использую сервер PostgreSQL для своего производственного использования.

Когда я запускаю запрос как

select * from pg_stat_activity

на моем сервере я получаю 98% запросов, таких как

SHOW TRANSACTION ISOLATION LEVEL

и мой сервер принимает только 100 подключений, поэтому я не могу продолжать дальше.

Почему это происходит? Как я могу заблокировать все эти запросы?

Йогеш Праджапати
источник
4
Postgres не создает соединений самостоятельно. Это ваше приложение создает эти соединения и выполняет эти запросы. Возможно, пул соединений или что-то подобное.
a_horse_with_no_name
2
Вы запускаете приложение Java? Используя HikariCP, или, может быть, другой вариант пула соединений? Я использую HikariCP и вижу похожую вещь, когда я вхожу и psqlделаю select query from pg_stat_activity;... Мне также было интересно, почему это происходит; я предполагаю, что это механизм, с помощью которого HikariCP сохраняет связи "свежими".
Крис В.

Ответы:

2

Если они там; они там, но они волшебным образом не выскочили из воздуха. Хотя я бы хотел, чтобы вы вернулись и рассказали нам, какими они были в вашем случае, обычно это одна из двух вещей,

  1. Пул подключений
  2. ORM или SQL абстракция

Иногда эти парни подключаются и запускают пустые транзакции или готовят транзакцию. Это всегда результат плохой библиотеки. Это простительно, если библиотека является новой или новой для базы данных. Если библиотеке уже много лет, и я занимаюсь этим, я подозреваю, что они не слишком много смотрят на нее и смотрят на альтернативы.

Из комментариев

Postgres не создает соединений самостоятельно. Это ваше приложение создает эти соединения и выполняет эти запросы. Возможно, пул соединений или что-то подобное. - a_horse_with_no_name 10 сентября '13 в 9:03

Вы запускаете приложение Java? Используя HikariCP, или, может быть, другой вариант пула соединений? Я использую HikariCP и вижу похожую вещь, когда я захожу в psql и выбираю запрос из pg_stat_activity; ... Мне также было интересно, почему это происходит; я предполагаю, что это механизм, с помощью которого HikariCP сохраняет связи "свежими". - Крис В. 16 января '16 в 19:22

Хотя это возможно, это попытка сохранить связь «свежей», кошерный способ сделать это примерно так

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

Вы можете подать отчет об ошибке, чтобы использовать этот метод.

Эван Кэрролл
источник