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

Làm thế nào để tăng kết nối tối đa trong postgres?

Chỉ tăng max_connections là một ý tưởng tồi. Bạn cần tăng shared_bufferskernel.shmmax nữa.

Cân nhắc

max_connections xác định số lượng tối đa các kết nối đồng thời đến máy chủ cơ sở dữ liệu. Giá trị mặc định thường là 100 kết nối.

Trước khi tăng số lượng kết nối, bạn có thể cần mở rộng quy mô triển khai. Nhưng trước đó, bạn nên cân nhắc xem bạn có thực sự cần tăng giới hạn kết nối hay không.

Mỗi kết nối PostgreSQL sử dụng RAM để quản lý kết nối hoặc ứng dụng khách sử dụng nó. Bạn càng có nhiều kết nối, bạn sẽ sử dụng càng nhiều RAM mà thay vào đó có thể được sử dụng để chạy cơ sở dữ liệu.

Một ứng dụng được viết tốt thường không cần nhiều kết nối. Nếu bạn có một ứng dụng cần một số lượng lớn kết nối thì hãy cân nhắc sử dụng một công cụ như pg_bouncer có thể gộp các kết nối cho bạn. Vì mỗi kết nối tiêu tốn RAM, bạn nên tìm cách giảm thiểu việc sử dụng chúng.

Cách tăng kết nối tối đa

1. Tăng max_connectionshared_buffers

trong /var/lib/pgsql/{version_number}/data/postgresql.conf

thay đổi

max_connections = 100
shared_buffers = 24MB

đến

max_connections = 300
shared_buffers = 80MB

shared_buffers tham số cấu hình xác định bao nhiêu bộ nhớ chuyên dụng sang PostgreSQL để sử dụng cho dữ liệu bộ nhớ đệm .

  • Nếu bạn có hệ thống có RAM từ 1GB trở lên, giá trị khởi đầu hợp lý cho shared_buffers là 1/4 bộ nhớ trong hệ thống của bạn.
  • không chắc bạn sẽ thấy việc sử dụng hơn 40% RAM để hoạt động tốt hơn so với một lượng nhỏ hơn (như 25%)
  • Xin lưu ý rằng nếu hệ thống hoặc bản dựng PostgreSQL của bạn là 32 bit, thì việc đặt shared_buffers trên 2 ~ 2,5GB là không thực tế.
  • Lưu ý rằng trên Windows, các giá trị lớn cho shared_buffers không có hiệu quả và bạn có thể tìm thấy kết quả tốt hơn khi giữ nó ở mức tương đối thấp và thay vào đó sử dụng bộ nhớ cache của hệ điều hành nhiều hơn. Trên Windows, phạm vi hữu ích là 64MB đến 512MB .

2. Thay đổi kernel.shmmax

Bạn sẽ cần tăng kích thước phân đoạn tối đa của hạt nhân để lớn hơn một chút hơn shared_buffers .

Trong tệp /etc/sysctl.conf thiết lập thông số như hình dưới đây. Nó sẽ có hiệu lực khi postgresql khởi động lại (Dòng sau làm cho hạt nhân tối đa là 96Mb )

kernel.shmmax=100663296

Tài liệu tham khảo

Kết nối tối đa Postgres và bộ đệm được chia sẻ

Điều chỉnh máy chủ PostgreSQL của bạn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi di chuyển Django:Cột không tồn tại

  2. cách sửa lỗi OperationalError:(psycopg2.OperationalError) máy chủ đóng kết nối đột ngột

  3. Giải pháp Ruby chung cho SQLite3 LIKE hoặc PostgreSQL ILIKE?

  4. mysql_insert_id thay thế cho postgresql

  5. Truy vấn postgresql LIKE