แค่เพิ่ม max_connections
เป็นความคิดที่ไม่ดี คุณต้องเพิ่มshared_buffers
และkernel.shmmax
เช่นกัน
ข้อควรพิจารณา
max_connections
กำหนดจำนวนสูงสุดของการเชื่อมต่อพร้อมกันไปยังเซิร์ฟเวอร์ฐานข้อมูล โดยทั่วไปค่าเริ่มต้นคือ 100 การเชื่อมต่อ
ก่อนที่จะเพิ่มจำนวนการเชื่อมต่อของคุณคุณอาจต้องปรับขนาดการปรับใช้ของคุณ แต่ก่อนหน้านั้นคุณควรพิจารณาว่าคุณต้องการขีด จำกัด การเชื่อมต่อที่เพิ่มขึ้นจริงๆหรือไม่
การเชื่อมต่อ PostgreSQL แต่ละครั้งจะใช้ RAM สำหรับจัดการการเชื่อมต่อหรือไคลเอ็นต์ที่ใช้ ยิ่งคุณมีการเชื่อมต่อมากเท่าไหร่คุณก็จะยิ่งใช้ RAM มากขึ้นเท่านั้นซึ่งสามารถใช้แทนฐานข้อมูลได้
โดยทั่วไปแอปที่เขียนดีไม่จำเป็นต้องมีการเชื่อมต่อจำนวนมาก หากคุณมีแอปที่ต้องการการเชื่อมต่อจำนวนมากให้พิจารณาใช้เครื่องมือเช่นpg_bouncerซึ่งสามารถรวมการเชื่อมต่อสำหรับคุณได้ เนื่องจากการเชื่อมต่อแต่ละครั้งใช้ RAM คุณควรพยายามลดการใช้งานให้น้อยที่สุด
วิธีเพิ่มการเชื่อมต่อสูงสุด
1. เพิ่มmax_connection
และshared_buffers
ใน /var/lib/pgsql/{version_number}/data/postgresql.conf
เปลี่ยนแปลง
max_connections = 100
shared_buffers = 24MB
ถึง
max_connections = 300
shared_buffers = 80MB
shared_buffers
กำหนดค่าพารามิเตอร์ที่กำหนดเท่าใดหน่วยความจำที่จะทุ่มเทให้กับ PostgreSQL การใช้งานสำหรับการแคชข้อมูล
- หากคุณมีระบบที่มี RAM 1GB ขึ้นไปค่าเริ่มต้นที่เหมาะสมสำหรับ shared_buffers คือ 1/4 ของหน่วยความจำในระบบของคุณ
- ไม่น่าเป็นไปได้ที่คุณจะใช้ RAM มากกว่า 40% เพื่อให้ทำงานได้ดีกว่าจำนวนที่น้อยกว่า (เช่น 25%)
- โปรดทราบว่าหากระบบหรือบิวด์ PostgreSQL ของคุณเป็นแบบ 32 บิตการตั้งค่า shared_buffers สูงกว่า 2 ~ 2.5GB อาจไม่เป็นประโยชน์
- โปรดทราบว่าใน Windows ค่าขนาดใหญ่สำหรับ shared_buffers จะไม่ได้ผลเท่าที่ควรและคุณอาจพบว่าผลลัพธ์ที่ดีกว่าทำให้มันค่อนข้างต่ำและใช้แคชของระบบปฏิบัติการแทน หน้าต่างช่วงที่มีประโยชน์คือ 64 ถึง 512MB
2. เปลี่ยน kernel.shmmax
คุณจะต้องเพิ่มขนาดเซ็กเมนต์สูงสุดของเคอร์เนลให้ใหญ่
กว่าไฟล์shared_buffers
.
ในไฟล์/etc/sysctl.conf
ตั้งค่าพารามิเตอร์ดังที่แสดงด้านล่าง จะมีผลเมื่อpostgresql
รีบูต (บรรทัดต่อไปนี้ทำให้เคอร์เนลสูงสุดเป็น96Mb
)
kernel.shmmax=100663296
อ้างอิง
Postgres Max Connections และ Shared Buffers
ปรับแต่งเซิร์ฟเวอร์ PostgreSQL ของคุณ