pg_activity에서“Show transaction isolation level”로 여러 쿼리 받기


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가 연결을 "신선하게"유지하는 메커니즘입니다.
Chris W.

답변:


2

그들이 있다면; 그들은 거기에 있지만 마법처럼 얇은 공기에서 튀어 나오지 않았습니다. 당신이 돌아와서 그들이 당신의 경우에 무엇인지 말 해주길 바라지 만, 일반적으로 두 가지 중 하나입니다.

  1. 연결 풀링
  2. ORM 또는 SQL 추상화

때때로이 사람들은 빈 거래를 연결하고 시작하거나 거래를 준비합니다. 항상 나쁜 라이브러리의 결과입니다. 라이브러리가 데이터베이스에 새로운 것이거나 새로운 것이면 변명 할 수 있습니다. 도서관이 오래되어서 이것을하고 있다면, 도서관에 눈이 너무 많지 않다고 생각하고 대안을 살펴보십시오.

댓글에서

Postgres는 자체 연결을 생성하지 않습니다. 해당 연결을 만들고 해당 쿼리를 실행하는 것은 응용 프로그램입니다. 아마도 연결 풀 또는 이와 유사한 것입니다. – a_horse_with_no_name 9 월 10 '13시 9:03

Java 애플리케이션을 실행 중입니까? HikariCP 또는 다른 연결 풀링 옵션을 사용하십니까? HikariCP를 사용하고 있으며 psql에 로그인하고 pg_stat_activity에서 쿼리를 선택하면 비슷한 일이 발생합니다. 내 생각에 이것은 HikariCP가 연결을 "신선하게"유지하는 메커니즘입니다. – Chris W. Jan 16 '16 시간 19:22

연결을 "신선하게"유지하려는 시도는 가능하지만 코셔 방법은 다음 과 같습니다.

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

대신 해당 방법을 사용하기 위해 버그 보고서를 제출할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.