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

Sử dụng PgBouncer Connection Pooler cho PostgreSQL với ClusterControl 1.8.2

Các ứng dụng hiện đại như microservices thường yêu cầu rất nhiều kết nối cơ sở dữ liệu, chúng cũng sử dụng và giải phóng các kết nối đó rất nhanh. Khi PostgreSQL được phát triển gần 25 năm trước, các nhà phát triển của nó đã quyết định không sử dụng các luồng cho các yêu cầu mới mà thay vào đó tạo một quy trình mới cho mỗi yêu cầu. Mặc dù quyết định đó có thể có ý nghĩa vào thời điểm đó, nhưng nhiều mối liên hệ có thể là một vấn đề nghiêm trọng ngày nay. Một trong những giải pháp cho vấn đề này là một nhóm kết nối. Trong bài đăng trên blog này, chúng ta sẽ thảo luận về PgBouncer Connection Pool và cách sử dụng nó trong ClusterControl 1.8.2.

Tại sao nên sử dụng Nhóm kết nối

Chà, câu trả lời ngắn gọn cho câu hỏi này là đây là một giải pháp đơn giản nhưng hiệu quả trong việc cải thiện hiệu suất ứng dụng của bạn, đồng thời giảm tải trên máy chủ PostgreSQL. Chúng ta hãy đi sâu hơn một chút về vấn đề này, phải không?

Một nhóm kết nối có thể được định nghĩa là một bộ nhớ cache của các kết nối cơ sở dữ liệu mở mà máy khách có thể sử dụng lại. Nói cách khác, nó sẽ giảm tải cho cơ sở dữ liệu bằng cách giảm các yêu cầu trên mỗi kết nối mới. Những kết nối mới này về cơ bản được tạo ra bởi quy trình quản trị viên bưu điện mỗi khi kết nối được thiết lập, thường sẽ chiếm khoảng 2 đến 3 MB bộ nhớ cho mỗi kết nối.

Không có nhóm kết nối, điều này sẽ dẫn đến sự cố bất cứ khi nào số lượng kết nối quá cao vì người quản lý bưu điện cần cung cấp nhiều bộ nhớ. Trong PostgreSQL, nhóm kết nối được quản lý bởi PgBouncer.

PgBouncer là gì

PgBouncer là một trình gộp nhẹ, đơn nhị phân, mã nguồn mở và có lẽ là trình gộp kết nối phổ biến nhất cho PostgreSQL. PgBouncer là một tiện ích đơn giản thực hiện chính xác một việc, nó nằm giữa cơ sở dữ liệu và các máy khách và nói về giao thức PostgreSQL, sao chép một máy chủ PostgreSQL. Tại thời điểm viết bài, phiên bản mới nhất của PgBouncer là 1.15.0.

Hãy xem một số tính năng tốt nhất mà nó cung cấp là gì và có thể là lý do tại sao nó lại rất phổ biến trong thế giới PostgreSQL:

  • Nhẹ - chỉ một quy trình duy nhất, tất cả các yêu cầu từ máy khách và phản hồi từ máy chủ đều qua PgBouncer mà không cần thêm bất kỳ quy trình nào xử lý

  • Thiết lập dễ dàng - không yêu cầu thay đổi mã phía máy khách và một trong những trình xử lý kết nối PostgreSQL đơn giản nhất để thiết lập

  • Khả năng mở rộng &Hiệu suất - quy mô phù hợp với một số lượng lớn khách hàng và đồng thời tăng đáng kể các giao dịch mỗi giây mà máy chủ PostgreSQL có thể hỗ trợ

Các bước thiết lập PgBouncer Với ClusterControl

Có một vài bước để bạn cài đặt và cấu hình PgBouncer với ClusterControl. Trong phần này, chúng ta sẽ đi qua các bước với điều kiện là bạn đã triển khai cụm PostgreSQL. Nếu bạn chưa có cụm, bạn có thể làm theo hướng dẫn trong bài đăng blog này.

Từ giao diện người dùng web của bạn> Chọn Cụm PostgreSQL> Quản lý> Bộ cân bằng tải> Chọn tab PgBouncer và ảnh chụp màn hình sau sẽ xuất hiện. Ở đây bạn có thể chọn Triển khai hoặc Nhập PgBouncer, trong ví dụ này, chúng tôi sẽ chọn Triển khai.:

Bạn có thể chọn nút từ trình đơn thả xuống, chỉ định cổng, thêm ' Người dùng quản trị PgBouncer 'cũng như mật khẩu và nhấp vào' Triển khai PgBouncer '. Công việc sẽ bắt đầu chạy và trạng thái sẽ bắt đầu xuất hiện trên màn hình này, bạn cũng có thể theo dõi nó trong tab "Hoạt động".

Sau khi nút PgBouncer được triển khai thành công, bước tiếp theo là tạo nhóm kết nối. Từ Cụm> Nút> Chọn nút PgBouncer và ảnh chụp màn hình sau sẽ xuất hiện:

Màn hình kết nối sẽ xuất hiện khi bạn nhấp vào 'Tạo nhóm kết nối' cái nút. Bạn có thể điền vào tất cả thông tin và cập nhật giá trị tùy thuộc vào thiết lập của bạn, ví dụ này, chúng tôi sẽ sử dụng giá trị mặc định cho 'Chế độ nhóm', 'Kích thước nhóm' và 'Kết nối cơ sở dữ liệu tối đa':

Tại đây, bạn sẽ cần thêm các thông tin sau:

  • Tên máy chủ PgBouncer:Chọn máy chủ lưu trữ nút để tạo nhóm kết nối.

  • Tên nhóm:Tên nhóm và cơ sở dữ liệu phải giống nhau.

  • Tên người dùng:Chọn người dùng từ nút chính PostgreSQL hoặc tạo một người dùng mới.

  • Chế độ nhóm:phiên (mặc định), giao dịch hoặc tổng hợp câu lệnh.

    • phiên (mặc định):Máy chủ được giải phóng trở lại nhóm sau khi máy khách ngắt kết nối

    • giao dịch:Máy chủ được giải phóng trở lại nhóm sau khi giao dịch kết thúc

    • Câu lệnh
    • :Máy chủ được giải phóng trở lại nhóm sau khi kết thúc truy vấn. Các giao dịch bao gồm nhiều câu lệnh không được phép trong chế độ này

  • Kích thước nhóm:Kích thước tối đa của nhóm cho cơ sở dữ liệu này. Giá trị mặc định là 20.

  • Kết nối Cơ sở dữ liệu Tối đa:Định cấu hình mức tối đa cho toàn cơ sở dữ liệu. Giá trị mặc định là 0, có nghĩa là không giới hạn.

Nhóm kết nối sẽ xuất hiện sau khi bạn nhấp vào nút 'Hoàn tất' theo ảnh chụp màn hình bên dưới và cả PgBouncer và nhóm kết nối hiện đã sẵn sàng:

Kết luận

Sử dụng nhóm kết nối và PgBouncer là một số bước để cải thiện hiệu suất ứng dụng của bạn khi có tính khả dụng cao. Với ClusterControl, bạn có thể triển khai PgBouncer cũng như tạo một nhóm kết nối một cách dễ dàng và nhanh chóng.

Để làm cho nó tốt hơn nữa, chúng tôi cũng khuyên bạn nên triển khai HAProxy ngoài PgBouncer. Tính năng HAProxy có sẵn trong ClusterControl và tại thời điểm viết bài, phiên bản chúng tôi đang sử dụng là 1.8.23.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi tệp kết xuất SQLITE SQL sang POSTGRESQL

  2. Docker - Làm cách nào để chạy lệnh psql trong vùng chứa postgres?

  3. Python / postgres / psycopg2:nhận ID của hàng vừa được chèn

  4. Tham khảo bí danh tên cột trong mệnh đề WHERE

  5. Cân bằng tải PostgreSQL trong đám mây trở nên dễ dàng