Chỉ tăng max_connections
là ý tưởng tồi. Bạn cần phải tăng shared_buffers
và kernel.shmmax
cả.
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. 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 phải mở rộng quy mô triển khai của mình. 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 tiêu tốn RAM để quản lý kết nối hoặc máy khách sử dụng nó. Bạn càng có nhiều kết nối, bạn sẽ càng sử dụng nhiều RAM mà thay vào đó có thể 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 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 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_connection
vàshared_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
Các shared_buffers
tham số cấu hình xác định có bao nhiêu bộ nhớ được dành riêng để PostgreSQL để sử dụng cho bộ nhớ đệm dữ liệu .
- 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 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%)
- 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 hiệu quả và bạn có thể 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ớ đệm 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 nhân để lớn hơn một chút
so với 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 nhân tối đa 96Mb
)
kernel.shmmax=100663296
Người giới thiệu
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