Chúng tôi có một máy chủ Postgres mạnh mẽ (64 lõi, RAM 384 GB, 16 ổ đĩa SAS 15k, RAID 10) và nhiều lần trong ngày chúng tôi xây dựng lại một số tập dữ liệu lớn. . Apache và Tomcat cũng chạy trên cùng một máy chủ.Postgres: Checkpoints thường xuất hiện quá thường xuyên
Chúng tôi đang nhận được cảnh báo này khoảng 300 lần một ngày, trong khi xây dựng lại những bộ dữ liệu, với những đoạn dài nơi các lỗi được trung bình 2-5 giây ngoài:
2015-01-15 12:32:53 EST [11403]: [10841-1] LOG: checkpoints are occurring too frequently (2 seconds apart)
2015-01-15 12:32:56 EST [11403]: [10845-1] LOG: checkpoints are occurring too frequently (3 seconds apart)
2015-01-15 12:32:58 EST [11403]: [10849-1] LOG: checkpoints are occurring too frequently (2 seconds apart)
2015-01-15 12:33:01 EST [11403]: [10853-1] LOG: checkpoints are occurring too frequently (3 seconds apart)
Đây là những cài đặt liên quan:
checkpoint_completion_target 0.7
checkpoint_segments 64
checkpoint_timeout 5min
checkpoint_warning 30s
wal_block_size 8192
wal_buffers 4MB
wal_keep_segments 5000
wal_level hot_standby
wal_receiver_status_interval 10s
wal_segment_size 16MB
wal_sync_method fdatasync
wal_writer_delay 200ms
work_mem 96MB
shared_buffers 24GB
effective_cache_size 128GB
Vì vậy, điều đó có nghĩa là chúng tôi đang viết các tệp WAL có dung lượng 1024 MB mỗi 2 - 5 giây, đôi khi được duy trì trong 15 - 30 phút.
1) Bạn có thấy bất kỳ cài đặt nào chúng tôi có thể cải thiện không? Hãy cho tôi biết nếu bạn cần các tài liệu khác được cài đặt.
2) Chúng ta có thể sử dụng "SET LOCAL synchronous_commit TO OFF;" khi bắt đầu các giao dịch ghi chuyên sâu này để cho phép những công việc WAL này diễn ra nhiều hơn một chút trong nền, có ít tác động hơn đến phần còn lại của các hoạt động?
Dữ liệu mà chúng tôi đang xây dựng lại được lưu trữ ở nơi khác, do đó, khả năng mất nguồn và bản sao lưu pin RAID không thực hiện công việc, chúng tôi sẽ không thực hiện bất kỳ điều gì sau khi tập dữ liệu được xây dựng lại.
"SET LOCAL synchronous_commit TO OFF;" gây ra bất kỳ vấn đề nếu điều này tiếp tục trong 15 - 30 phút? Hoặc gây ra bất kỳ sự cố nào với bản sao phát trực tuyến của chúng tôi, sử dụng trình gửi WAL?
Cảm ơn!
PS. Tôi hy vọng Samsung bắt đầu vận chuyển ổ SSD doanh nghiệp PCIe SM1715 3.2 TB của họ, vì tôi nghĩ rằng nó sẽ giải quyết vấn đề của chúng tôi một cách độc đáo.
Nếu trạm kiểm soát xảy ra quá thường xuyên, cách khắc phục thông thường là tăng 'checkpoint_segments' (bạn cũng đang sử dụng phiên bản Postgres nào?) –
Chúng tôi đang sử dụng Postgres 9.2.9, mặc dù chúng tôi đang lên kế hoạch chuyển sang 9.4 sớm . Nhìn xung quanh tôi thấy các giá trị checkpoint_segments cao tới 256 (4 GB), có thể cao hơn, điều này sẽ thay đổi 2 - 5 giây thành 8 - 20 giây (nếu tôi hiểu chính xác). Có những nhược điểm cho một giá trị cao? Tôi đã không nêu ra nó lo sợ nó sẽ làm tăng không gian đĩa được sử dụng, nhưng nhìn vào nó wal_keep_segments là dictating tổng số không gian của chúng tôi (80 GB). Cảm ơn – user1517922