PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Giám sát động các phiên bản PostgreSQL bằng pg_top

Theo dõi PostgreSQL, đôi khi, giống như cố gắng cuốn gia súc trong cơn giông bão. Các ứng dụng kết nối và đưa ra các truy vấn quá nhanh, thật khó để biết được điều gì đang xảy ra hoặc thậm chí có cái nhìn tổng quan tốt về hiệu suất của hệ thống ngoài việc nhà phát triển thông thường phàn nàn rằng "mọi thứ rất chậm, trợ giúp!".

Trong các bài viết trước, chúng ta đã thảo luận về cách Truy cập nguồn khi PostgreSQL hoạt động chậm, nhưng khi nguồn là các truy vấn cụ thể, việc giám sát mức cơ bản có thể không đủ để đánh giá những gì đang diễn ra trong môi trường trực tiếp đang hoạt động.

Nhập pg_top, một chương trình cụ thể của PostgreSQL để theo dõi hoạt động thời gian thực trong cơ sở dữ liệu, cũng như xem thông tin cơ bản cho chính máy chủ cơ sở dữ liệu. Giống như lệnh ‘top’ trong linux, việc chạy nó sẽ đưa người dùng vào một màn hình tương tác trực tiếp của hoạt động cơ sở dữ liệu trên máy chủ, tự động làm mới theo khoảng thời gian.

Cài đặt

Cài đặt pg_top có thể được thực hiện theo những cách thường được mong đợi:trình quản lý gói và cài đặt nguồn. Phiên bản gần đây nhất của bài viết này là 3.7.0.

Trình quản lý gói

Dựa trên việc phân phối linux được đề cập, hãy tìm kiếm pgtop hoặc pg_top trong trình quản lý gói, nó có thể khả dụng ở một số khía cạnh cho phiên bản PostgreSQL đã cài đặt trên hệ thống.

Bản phân phối dựa trên Red Hat:

# sudo yum install pg_top

Bản phân phối dựa trên Gentoo:

# sudo apt-get install pgtop

Nguồn

Nếu muốn, pg_top có thể được cài đặt thông qua nguồn từ kho lưu trữ git PostgreSQL. Điều này sẽ cung cấp bất kỳ phiên bản nào bạn muốn, ngay cả các bản dựng mới hơn chưa có trong các bản phát hành chính thức.

Tính năng

Sau khi được cài đặt, pg_top hoạt động như một chế độ xem thời gian thực rất chính xác vào cơ sở dữ liệu mà nó đang theo dõi và việc sử dụng dòng lệnh để chạy ‘pg_top’ sẽ khởi chạy công cụ giám sát PostgreSQL tương tác.

Bản thân công cụ này có thể giúp làm sáng tỏ tất cả các quy trình hiện được kết nối với cơ sở dữ liệu.

Đang chạy pg_top

Khởi chạy pg_top cũng giống như lệnh ‘top’ kiểu unix / linux, cùng với thông tin kết nối với cơ sở dữ liệu.

Để chạy pg_top trên máy chủ cơ sở dữ liệu cục bộ:

pg_top -h localhost -p 5432 -d severalnines -U postgres

Để chạy pg_top trên máy chủ từ xa, cờ -r hoặc --remote-mode là bắt buộc và phần mở rộng pg_proctab được cài đặt trên máy chủ:

pg_top -r -h 192.168.1.20 -p 5432 -d severalnines -U postgres

Nội dung trên màn hình

Khi khởi chạy pg_top, chúng tôi thấy một màn hình hiển thị khá nhiều thông tin.

Đầu ra tiêu chuẩn từ pg_top trên linux

Trung bình tải:
Giống như lệnh hàng đầu tiêu chuẩn, mức tải trung bình này trong các khoảng thời gian 1, 5 và 15 phút.

Thời gian hoạt động:
Tổng thời gian hệ thống trực tuyến kể từ lần khởi động lại gần nhất.

Các quy trình:
Tổng số quy trình cơ sở dữ liệu được kết nối, với số lượng đang chạy và số lượng đang ở chế độ ngủ.

Thống kê CPU:
Thống kê của CPU, hiển thị phần trăm tải cho người dùng, hệ thống và thông tin nhàn rỗi, đẹp mắt cũng như phần trăm iowait.

Bộ nhớ:
Tổng dung lượng bộ nhớ được sử dụng, còn trống, trong bộ đệm và được lưu trong bộ nhớ đệm.

Hoạt động DB:
Số liệu thống kê cho hoạt động cơ sở dữ liệu như giao dịch mỗi giây, số lần khôi phục trên giây, bộ đệm đọc mỗi giây, bộ đệm đạt được mỗi giây, số hàng được đọc mỗi giây và số hàng được ghi mỗi giây.

Hoạt động DB I / O:
Hoạt động cho Đầu ra đầu vào trên hệ thống, hiển thị số lần đọc và ghi mỗi giây, cũng như số lượng đọc và ghi mỗi giây.

Thống kê Đĩa DB:
Tổng kích thước của đĩa cơ sở dữ liệu cũng như dung lượng trống.

Hoán đổi:
Thông tin về không gian hoán đổi được sử dụng, nếu có.

Quy trình:
Một danh sách các quy trình được kết nối với cơ sở dữ liệu, bao gồm bất kỳ loại quy trình nội bộ tự động nào. Danh sách bao gồm pid, ưu tiên, dung lượng tốt, bộ nhớ thường được sử dụng, trạng thái kết nối, số giây cpu được sử dụng, phần trăm cpu và lệnh hiện tại mà quá trình đang chạy.

Các tính năng tương tác hữu ích

Có một số tính năng tương tác trong pg_top có thể được truy cập khi nó đang chạy. Bạn có thể tìm thấy danh sách đầy đủ bằng cách nhập ?, sẽ xuất hiện màn hình trợ giúp với tất cả các tùy chọn khác nhau có sẵn.

Thông tin về công cụ lập kế hoạch

E - Kế hoạch Thực thi
Nhập E sẽ cung cấp lời nhắc cho một ID quy trình để hiển thị một kế hoạch giải thích. Điều này tương đương với việc chạy “EXPLAIN ;” trong cơ sở dữ liệu theo cách thủ công.

A - GIẢI THÍCH PHÂN TÍCH (CẬP NHẬT / XÓA an toàn)
Nhập A sẽ đưa ra lời nhắc cho một ID quy trình để hiển thị kế hoạch GIẢI THÍCH PHÂN TÍCH. Điều này tương đương với việc chạy “EXPLAIN ANALYZE ;” trong cơ sở dữ liệu theo cách thủ công.

Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thức

Thông tin quy trình

Q - Hiển thị truy vấn hiện tại của một quy trình
Nhập Q sẽ cung cấp lời nhắc cho một ID quy trình để hiển thị toàn bộ truy vấn.

I - Hiển thị thống kê I / O cho mỗi quy trình (chỉ dành cho Linux)
Vào tôi sẽ chuyển danh sách quy trình sang màn hình I / O, hiển thị từng quy trình đọc, ghi, v.v. vào đĩa.

L - Hiển thị các khóa được giữ bởi một quy trình
Nhập L sẽ cung cấp lời nhắc cho một ID quy trình để hiển thị các khóa được giữ. Điều này sẽ bao gồm cơ sở dữ liệu, bảng, loại khóa và khóa đã được cấp hay chưa. Hữu ích khi khám phá các quy trình đang chạy hoặc chờ đợi lâu.

Thông tin quan hệ

R - Hiển thị thống kê bảng của người dùng.
Nhập R sẽ hiển thị thống kê bảng bao gồm quét tuần tự, quét chỉ mục, CHÈN, CẬP NHẬT và XÓA, tất cả đều có liên quan đến hoạt động gần đây.

X - Hiển thị thống kê chỉ mục người dùng
Nhập X sẽ hiển thị thống kê chỉ mục bao gồm quét chỉ mục, đọc chỉ mục và tìm nạp chỉ mục, tất cả đều có liên quan đến hoạt động gần đây.

Sắp xếp

Việc sắp xếp màn hình có thể được thực hiện thông qua bất kỳ ký tự nào sau đây.
M - Sắp xếp theo mức sử dụng bộ nhớ
N - Sắp xếp theo nhóm
P - Sắp xếp theo mức sử dụng CPU
T - Sắp xếp theo thời gian

Sau đây là các mục được chỉ định sau khi nhấn o, cho phép sắp xếp các trang chỉ mục, bảng và i / o stat.
o - Chỉ định thứ tự sắp xếp (cpu, size, res, time, command)
thống kê chỉ mục (idx_scan, idx_tup_fetch, idx_tup_read)
thống kê bảng (seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, n_tup_ins, n_tup_upd, n_tup_del) , ghi, viết, lệnh)

Kết nối / Thao tác truy vấn

k - kill các quy trình được chỉ định
Nhập k sẽ đưa ra lời nhắc cho một quy trình hoặc danh sách các quy trình cơ sở dữ liệu để hủy.

r - renice a process (local database only, root only)
Nhập r sẽ đưa ra lời nhắc về giá trị đẹp, sau đó là danh sách các quy trình cần đặt thành giá trị tốt mới đó. Điều này thay đổi mức độ ưu tiên của các quy trình quan trọng trong hệ thống.

Ví dụ:“renice 1 7004”

Các cách sử dụng khác nhau của pg_top

Sử dụng phản ứng của pg_top

Việc sử dụng chung cho pg_top là chế độ tương tác, cho phép chúng tôi xem những truy vấn nào đang chạy trên hệ thống đang gặp vấn đề về độ chậm, chạy giải thích kế hoạch cho những truy vấn đó, chỉnh sửa lại các truy vấn quan trọng để chúng hoàn thành nhanh hơn hoặc loại bỏ bất kỳ truy vấn nào gây ra sự chậm chạp nghiêm trọng . Nói chung, nó cho phép người quản trị cơ sở dữ liệu thực hiện nhiều công việc tương tự có thể được thực hiện theo cách thủ công trên hệ thống, nhưng với một tùy chọn nhanh hơn và tất cả trong một.

Chủ động sử dụng pg_top

Mặc dù nó không quá phổ biến nhưng pg_top có thể được chạy ở 'chế độ hàng loạt', chế độ này sẽ hiển thị thông tin chính được thảo luận thành tiêu chuẩn, sau đó thoát. Điều này có thể được viết kịch bản để chạy trong những khoảng thời gian nhất định, sau đó được gửi đến bất kỳ quy trình tùy chỉnh nào mong muốn, được phân tích cú pháp và cảnh báo được tạo dựa trên những gì quản trị viên có thể muốn được cảnh báo. Ví dụ:nếu tải của hệ thống quá cao, nếu có giá trị giao dịch trên giây cao hơn mong đợi, thì bất cứ điều gì mà một chương trình quảng cáo có thể tìm ra.

Nói chung, có các công cụ khác để thu thập và báo cáo về thông tin này, nhưng có nhiều tùy chọn hơn luôn là một điều tốt và với việc có nhiều công cụ hơn, bạn có thể tìm thấy các tùy chọn tốt nhất.

Lịch sử sử dụng pg_top

Giống như cách sử dụng trước đây, sử dụng chủ động, chúng ta có thể viết tập lệnh lên pg_top ở chế độ hàng loạt để ghi lại các ảnh chụp nhanh về cơ sở dữ liệu trông như thế nào theo thời gian. Điều này có thể đơn giản như ghi nó vào một tệp văn bản có dấu thời gian hoặc phân tích cú pháp nó và lưu trữ ngày trong cơ sở dữ liệu quan hệ để tạo báo cáo. Điều này sẽ cho phép tìm thấy nhiều thông tin hơn sau một sự cố lớn, chẳng hạn như sự cố cơ sở dữ liệu lúc 4 giờ sáng. Càng nhiều dữ liệu có sẵn, càng có nhiều khả năng xảy ra sự cố.

Thông tin thêm

Tài liệu về dự án khá hạn chế và hầu hết thông tin đều có trong trang người dùng linux, được tìm thấy bằng cách chạy ‘man pg_top’. Cộng đồng PostgreSQL có thể trợ giúp về các câu hỏi hoặc vấn đề thông qua Danh sách gửi thư PostgreSQL hoặc Phòng trò chuyện IRC chính thức được tìm thấy trên freenode, tên kênh #postgresql.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gặp lỗi khi ánh xạ cột PostgreSQL LTREE ở chế độ ngủ đông

  2. psycopg2 tương đương với mysqldb.escape_string?

  3. Làm cách nào để tắt tạm thời các trình kích hoạt trong PostgreSQL?

  4. Để bỏ qua các khóa trùng lặp trong quá trình 'sao chép từ' trong postgresql

  5. Cách date_trunc () hoạt động trong PostgreSQL