Postgres DISK IO rất cao. Tôi có thể làm gì để giảm nó ngay lập tức?


13

Tôi biết các đĩa nhanh hơn những gì tôi đang sử dụng sẽ giúp ích nhưng việc này sẽ mất nhiều thời gian hơn và tôi đang cố gắng sử dụng một số biện pháp khẩn cấp để giảm IO đĩa. trên đỉnh đang báo cáo việc sử dụng DSK trên màu đỏ gần như liên tục. Điều này là dành cho postgres 8.3.

Cài đặt shared_buffers của tôi ở mức 24 MB mặc dù máy chủ có 16GB ram không được sử dụng đầy đủ. Suy nghĩ đầu tiên của tôi là cung cấp cho cơ sở dữ liệu nhiều ram nhất có thể nhưng tôi không chắc làm thế nào để làm điều đó (đây là một máy chủ cơ sở dữ liệu chuyên dụng).

Bất kỳ giải pháp nào không yêu cầu khởi động lại đều tốt hơn nhưng tôi sẽ lấy những gì tôi có thể nhận được vào thời điểm này.

Cảm ơn!


Câu hỏi này nên được hỏi tại Serverfault
Francisco R

Bạn có thể thử tăng shared_bufferstệp cấu hình postgresql.conf. Thay đổi này yêu cầu khởi động lại. Ngoài ra, bạn có thể cần phải tăng giá trị /proc/sys/kernel/shmmaxtrước đó.
Khaled

Câu trả lời:


12

Cài đặt shared_buffers 24 MB là mặc định bảo thủ, tôi muốn nói rằng nó cần phải cao hơn khá nhiều cho cơ sở dữ liệu chuyên dụng có sẵn 16GB RAM. Nhưng có, bạn sẽ phải khởi động lại máy chủ để thay đổi kích thước nó. http://wiki.postgresql.org/wiki/Performance_Optimization là một nơi tốt để bắt đầu cho các hướng dẫn cấu hình hiệu suất. Đặt shared_buffers thành 4GB hoặc 6GB có vẻ hợp lý hơn.

Lưu ý rằng trên linux, bạn cần điều chỉnh cài đặt sysctl kernel.shmmax (trong /etc/sysctl.conf hoặc chỉ bằng cách viết / Proc / sys / kernel / shmmax) để cấp phát một khối bộ nhớ được chia sẻ nhiều này. Nếu bạn không gặp phải lỗi xác định số lượng được yêu cầu, bạn phải đặt kernel.shmmax cao hơn mức đó.

Vì bạn có nhiều bộ nhớ, bạn cũng có thể xem xét đặt work_mem mặc định cao hơn, điều này sẽ khiến mọi thứ như sắp xếp và băm (nhóm / thứ tự / khác biệt, v.v.) có xu hướng hoạt động trong bộ nhớ thay vì sử dụng tệp tạm thời. Bạn không cần phải khởi động lại máy chủ để thực hiện việc này, chỉ cần cập nhật tệp cấu hình, tải lại dịch vụ và các phiên mới sẽ nhận được cài đặt mới. Bộ nhớ công việc mặc định cho một phiên là 1MB, bạn có thể tính toán mức tối đa có thể được sử dụng tại một thời điểm work_mem * max_client_connectionsvà ước tính tác động sẽ có.

Bạn cũng nên tăng hiệu quả_cache_size để chỉ ra cho trình hoạch định rằng lớp FS kernel có khả năng lưu trữ rất nhiều trang trong bộ nhớ bên ngoài bộ đệm chia sẻ của postgresql.

vv vv hy vọng điều này sẽ giúp bạn có một khởi đầu tốt.


Bài đăng tốt, chỉ ước tính sử dụng bộ nhớ của bạn là một chút nguy hiểm. work_mem là một hoạt động tối đa cho mỗi sắp xếp / băm để các truy vấn phức tạp có thể có nhiều hoạt động sắp xếp / băm và do đó có thể sử dụng nhiều hơn một work_mem.
Lươn

Cảm ơn, nó đã giúp rất nhiều! Một thay đổi đáng kể khác là checkpoint_seribution và checkpoint_completion_target có ảnh hưởng lớn đến việc sử dụng đĩa và hiệu suất tổng thể của tôi. Ngăn chặn khủng hoảng. ( wiki.postgresql.org/wiki/Tuning_Your_PostgreQuery_Server )
Harel


2

Ngoài các đề xuất được đưa ra ở đây, bạn cũng có thể muốn xem xét các cài đặt vắc-xin tự động. Theo mặc định, nó sẽ kích hoạt sau khoảng 50 bản cập nhật và nếu cơ sở dữ liệu của bạn thực hiện nhiều cập nhật / chèn thì điều này có thể kích hoạt một lượng báo cáo chân không không cần thiết sẽ tạo ra rất nhiều IO.


1

Trên một hệ thống rất gần với thông lượng I / O tối đa trong quá trình hoạt động bình thường, bạn có thể muốn tăng checkpoint_completion_target để giảm tải I / O từ các điểm kiểm tra . Nhược điểm của điều này là việc kéo dài các trạm kiểm soát ảnh hưởng đến thời gian phục hồi, bởi vì nhiều phân đoạn WAL sẽ cần được giữ lại để sử dụng có thể trong phục hồi

Xem thêm tại đây .


0

Nếu tỷ lệ đĩa của postgresql rất cao, bạn nên kiểm tra các câu lệnh đang chạy, đặc biệt là đối với các câu lệnh, thực hiện "sắp xếp trên đĩa" và đặt các chỉ mục thích hợp.

Chỉ cần google cho "Điều chỉnh hiệu suất Postgresql", bạn sẽ tìm thấy đủ các điểm bắt đầu từ đâu.

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.