2010-01-30 31 views
9

PostgreSQL có 3 thiết lập keepalive để quản lý các kết nối giảm (trong postgresql.conf):Cách sử dụng cài đặt tcp_keepalives trong Postgresql?

tcp_keepalives_count
tcp_keepalives_idle
tcp_keepalives_interval

Theo mặc định đây là những 0.

Các hành vi tôi muốn là cho Postgresql để thả các kết nối máy khách sau một khoảng thời gian, nếu máy khách mất kết nối mạng hoặc đi ngủ.

Tôi hiện đang sử dụng các giá trị:

tcp_keepalives_count = 1
tcp_keepalives_idle = 60
tcp_keepalives_interval = 60

Tôi đang chạy PostgreSQL 8.4 trên Mac OS X, nhưng nó dường như không có bất kỳ hiệu ứng nào. Thử nghiệm của tôi là tôi khóa một hàng trong một bảng (sử dụng SELECT FOR UPDATE) và ngắt kết nối máy trạm khỏi mạng. Nhưng trong Postgresql tôi vẫn thấy rằng máy trạm đang giữ khóa.

Tôi mong rằng sau khi hết thời gian (60 giây trong trường hợp này) kết nối sẽ bị chấm dứt và khóa sẽ được giải phóng.

Hoặc tôi đang làm điều gì đó sai hoặc tôi hoàn toàn hiểu nhầm cách thức này được cho là hoạt động.

Bất cứ lời khuyên?

+0

Không có. Tôi cứ nghĩ rằng tôi đã có một cái gì đó ... sau đó không có gì. – pestilence669

+0

Tôi đã rời khỏi máy chủ qua đêm và khi tôi kiểm tra trong AM, khóa đã được phát hành. Tôi không biết chính xác mất bao lâu để kết nối bị chấm dứt, nhưng rõ ràng là nó không nhìn vào các thiết lập mới của tôi (và, vâng, tôi đã khởi động lại máy chủ). –

Trả lời

9

Tôi nghĩ bạn cần phải định cấu hình hệ điều hành của mình thay thế. Thay đổi các tham số keepalive theo chương trình chưa được hỗ trợ rộng rãi. Điều này sẽ giúp bạn:
Using TCP keepalive to Detect Network Errors

Ngoài ra các thông số của bạn được chọn kém. Nếu tcp_keepalives_count=1 hoạt động thì ngay cả khi mất gói keepalive sẽ làm mất kết nối của bạn. Và các gói đơn bị mất thường xuyên. Tôi muốn sử dụng sau trong /etc/sysctl.conf trên MacOSX/FreeBSD:
net.inet.tcp.keepidle = 60000
net.inet.tcp.keepintvl = 10000
OS sau đó sẽ thả các kết nối tối đa là 140 giây (60 giây nhàn rỗi + 8 gói keepalive trong khoảng thời gian 10 giây) sau khi mất kết nối.

Các vấn đề liên quan