Nhận nhiều truy vấn với mức độ hiển thị giao dịch cách ly trên mạng trong pg_activity


10

Tôi đang sử dụng máy chủ PostgreSQL để sử dụng sản xuất.

Khi tôi bắn một truy vấn như

select * from pg_stat_activity

trên máy chủ của tôi, tôi nhận được 98% truy vấn như

SHOW TRANSACTION ISOLATION LEVEL

và máy chủ của tôi chỉ chấp nhận 100 kết nối, vì vậy tôi không thể tiến hành thêm.

Tại sao chuyện này đang xảy ra? Làm thế nào tôi có thể chặn tất cả các truy vấn này?


4
Postgres không tự tạo kết nối. Chính ứng dụng của bạn tạo ra các kết nối đó và chạy các truy vấn đó. Có thể là một nhóm kết nối hoặc một cái gì đó tương tự.
a_horse_with_no_name

2
Bạn đang chạy một ứng dụng Java? Sử dụng HikariCP, hoặc có thể là một tùy chọn kết nối khác? Tôi đang sử dụng HikariCP và thấy một điều tương tự khi tôi đăng nhập psqlvà làm select query from pg_stat_activity;... Tôi cũng tự hỏi tại sao điều này lại xảy ra; Tôi đoán đây là một cơ chế mà HikariCP giữ cho các kết nối "mới".
Chris W.

Câu trả lời:


2

Nếu họ ở đó; họ ở đó, nhưng họ không thoát ra khỏi không khí một cách kỳ diệu. Trong khi tôi muốn bạn quay lại và cho chúng tôi biết họ là ai trong trường hợp của bạn, đó thường là một trong hai điều,

  1. Kết nối tổng hợp
  2. Trừu tượng ORM hoặc SQL

Đôi khi những kẻ này kết nối và bắt đầu giao dịch trống, hoặc chuẩn bị một giao dịch. Nó luôn là kết quả của một thư viện tồi. Sẽ dễ dàng nếu thư viện là mới hoặc mới đối với cơ sở dữ liệu. Nếu thư viện đã cũ và làm điều này, tôi sẽ nghi ngờ họ không có quá nhiều con mắt vào nó và nhìn vào các lựa chọn thay thế.

Từ các ý kiến,

Postgres không tự tạo kết nối. Chính ứng dụng của bạn tạo ra các kết nối đó và chạy các truy vấn đó. Có thể là một nhóm kết nối hoặc một cái gì đó tương tự. - a_horse_with_no_name ngày 10 tháng 9 năm 13 lúc 9:03

Bạn đang chạy một ứng dụng Java? Sử dụng HikariCP, hoặc có thể là một tùy chọn kết nối khác? Tôi đang sử dụng HikariCP và thấy một điều tương tự khi tôi đăng nhập vào psql và chọn truy vấn từ pg_stat_activity; ... Tôi cũng đã tự hỏi tại sao điều này xảy ra; Tôi đoán đây là một cơ chế mà HikariCP giữ cho các kết nối "mới". - Chris W. 16 tháng 1, 16 lúc 19:22

Mặc dù có thể đó là một nỗ lực để giữ một kết nối "mới", cách thức tốt hơn để làm điều đó là như thế này

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

Bạn có thể muốn gửi một báo cáo lỗi để sử dụng phương pháp đó thay thế.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.