ปรับแต่ง Linux Server ให้รัน Database หนัก ๆ ได้อย่างมีประสิทธิภาพ
| #1 · 12 มิถุนายน 2569 เวลา 20:21 น. | |
| สวัสดีครับเพื่อน ๆ สาย Dev & API วันนี้จะมาแชร์เทคนิคเล็ก ๆ น้อย ๆ สำหรับการปรับแต่ง Linux Server (ไม่ว่าจะเป็น Ubuntu, Debian หรือ Distro อื่น ๆ) ให้พร้อมสำหรับการรัน Database หนัก ๆ ครับ หลายครั้งที่เราเจอปัญหาว่าทำไม Database เราถึงทำงานช้า หรือกินทรัพยากรเยอะผิดปกติ ทั้งที่สเปคเซิร์ฟเวอร์ก็ดูดีอยู่แล้ว ส่วนหนึ่งอาจจะมาจากตัวระบบปฏิบัติการเองที่ยังไม่ได้ปรับแต่งให้เหมาะสมกับการใช้งาน Database ครับ หัวข้อหลัก ๆ ที่เราควรให้ความสนใจมีประมาณนี้ครับ 1. การจัดการ Memory (RAM): Database ส่วนใหญ่จะใช้ RAM ในการ Cache ข้อมูลเพื่อให้การอ่านเขียนเร็วขึ้น เราต้องแน่ใจว่า Kernel ของ Linux ได้รับการตั้งค่าให้จัดสรร RAM ให้กับ Database อย่างเหมาะสม อาจจะต้องปรับค่า `swappiness` ให้ต่ำลง เพื่อลดการใช้ Swap File ที่ช้ากว่า RAM มาก ๆ หรือใช้ `Transparent Huge Pages (THP)` อย่างระมัดระวัง บางครั้งอาจจะปิดไปเลยหากพบว่าส่งผลเสียมากกว่าผลดี 2. การตั้งค่า I/O Scheduler: การเข้าถึง Disk เป็นคอขวดสำคัญของ Database เลยครับ การเลือก I/O Scheduler ที่เหมาะสมกับประเภทของ Disk (เช่น `noop` หรือ `deadline` สำหรับ SSD/NVMe) จะช่วยลด Latency ในการอ่านเขียนข้อมูลได้มาก 3. การปรับแต่ง Kernel Parameters: มีพารามิเตอร์ใน `/etc/sysctl.conf` อีกหลายตัวที่ส่งผลต่อประสิทธิภาพของ Network และ File System ซึ่งเป็นสิ่งจำเป็นสำหรับ Database เช่น `net.core.somaxconn`, `fs.file-max` เป็นต้น 4. การจัดการ Process Priority: การตั้งค่า Priority ให้กับ Process ของ Database สูงขึ้น จะช่วยให้ระบบปฏิบัติการจัดสรร CPU ให้กับ Database ก่อน Process อื่น ๆ ที่ไม่สำคัญ การปรับแต่งเหล่านี้อาจจะต้องทำความเข้าใจลักษณะการทำงานของ Database ที่เราใช้ (เช่น MySQL, PostgreSQL, MongoDB) และลักษณะ Workload ของเราเป็นพิเศษด้วยนะครับ ลองนำไปปรับใช้กันดู อาจจะเห็นความแตกต่างได้ชัดเจนเลยทีเดียวครับ #Linux#Database#ServerOptimization#VPS | |
เข้าสู่ระบบด้วย Google เพื่อร่วมตอบกระทู้ — กดปุ่มเดียวจบ ไม่ต้องสมัครอะไรเพิ่ม
