ประสิทธิภาพของ Postgresql - การปรับ SHMMAX และ SHMALL


9

ฉันได้อ่านทุกสิ่งที่ออนไลน์เกี่ยวกับการปรับปรุงประสิทธิภาพของ postgres แต่ค่า "ถูกต้อง" สำหรับ SHMMAX และ SHMALL ยังคงหลบเลี่ยงฉันอยู่

ฉันทามติดูเหมือนว่า SHMMAX = total_memory / 4 และ SHMALL = total_memory / 2 เป็นค่าเริ่มต้นที่ปลอดภัย

อย่างไรก็ตาม SHMALL สามารถวัดได้ในหน้าหรือไบต์และฉันไม่สามารถหาข้อมูลใด ๆ ที่ใช้กับ Ubuntu ได้

Ubuntu (หรือโดยทั่วไปแล้ว Debian) ใช้เพจหรือไบต์สำหรับ SHMALL หรือไม่

คำตอบ:


11

สำหรับระบบ Linux ทั้งหมดที่ฉันใช้SHMALLนั้นวัดเป็นหน้า ๆ และSHMMAXวัดเป็นไบต์ ฉันคิดว่าคุณอาจตรวจสอบระบบของคุณโดยใช้ipcsคำสั่งซึ่งมักจะแปลงพารามิเตอร์ข้างต้นเป็น KBytes ในขณะที่เอาท์พุทและเปรียบเทียบกับsysctlค่า:

[aseryozhin@centos ~]$ ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096               // SHMMNI   
max seg size (kbytes) = 524288              // SHMMAX
max total shared memory (kbytes) = 8388608  // SHMALL
min seg size (bytes) = 1

[aseryozhin@centos ~]$ sysctl -e kernel.shmmax
kernel.shmmax = 536870912

[aseryozhin@centos ~]$ sysctl -e kernel.shmall
kernel.shmall = 2097152

[aseryozhin@centos ~]$ getconf PAGE_SIZE
4096

SHMMAX: 524288 * 1024 = 536870912

SHMALL: 8388608 * 1024/4096 = 2097152


2

ตัวแปรเหล่านี้วัดเป็นไบต์ตามที่ระบุในเอกสารประกอบ ฉันคิดว่ามันสำคัญกว่าที่จะดูพารามิเตอร์การตั้งค่า postgresql คุณต้องดูค่า SHMALL / SHMMAX เมื่อจำเป็น ตัวอย่างเช่นหากคุณต้องการเพิ่มจำนวนการเชื่อมต่อสูงสุดคุณอาจต้องเพิ่มขีด จำกัด เหล่านี้

การปรับเซิร์ฟเวอร์ฐานข้อมูลขึ้นอยู่กับรูปแบบการใช้งานของคุณเช่นจำนวนการเชื่อมต่อพร้อมกันและขนาดฐานข้อมูล การเพิ่มพารามิเตอร์การกำหนดค่าอาจไม่ดีเสมอไป


2
SHMMAX จะต้องเพิ่มขึ้นเพื่อเพิ่ม shared_buffers ซึ่งเป็นผลไม้แขวนที่ต่ำที่สุดเมื่อมันมาถึงประสิทธิภาพของ postgresql คุณสามารถเพิ่มลิงค์ไปยังเอกสารประกอบได้หรือไม่?
เอนรีโก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.