Drupal เป็น Bloging System ที่พัฒนาอย่างซับซ้อน ด้วยความซับซ้อน ความซับซ้อนที่ว่าคือการเป็น CMF ในตัว ดังนั้นการทำงานจึงใช้ทรัพยากรของเครื่องพอสมควร (ในกรณีที่มีโหลดมากๆๆๆๆ) เนื่องจาก

1. Drupal ไม่มีการทำ caching โดย default ประมวลผลหน้าทุกครั้งที่โหลดหน้านั้นๆ ไม่เก็บ caching เอาไว้
2. ตารางเก็บข้อมูลของ Drupal ออกแบบมาให้รองรับ Tag และ blog item ทำให้การกสร้าง view ในการนำไปแสดงผลต้องการการประมวลผลสักน่อย
3. การเชื่อมต่อฐานข้อมูล MySQL ของ Drupal เชื่อมต่อแบบปกติไม่ได้เป็นแบบ persistent
4. การทำ Query Cache ใน MySQL ยังไม่ดีพอ
5. ไม่ค่อยได้ Maintenance Database
6. MySQL ใช้ MYISAM หากยังใช้ MyISAM อยู่ก้อต้องจูนดีๆ

จะจูน MySQL ยังไง?

ให้พิจาณา option file ของ MySQL เช่น my.cnf ในนั้นจะมีส่วนการกำหนด caching จำนวน connection และอื่นๆ นึกไม่ออกดูที่ http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html แล้วจะใส่ตัวเลข connection ได้ยังไง?

ให้ดู log ของ Apache คำนวนให้ได้ว่าจำนวน connection จริงๆ ที่ใช้ในการเชื่อมต่อมีจำนวนเท่าไรกันแน่ เช่น 256 client จำนวน databae ที่เชื่อมต่อได้สัดส่วนคร่าวๆ คือ 1/8 เท่ากับ 32 database connections ถ้าคิดในทางเข้าข้างตัวเองไว้ก่อน ก้อ คูณด้วย 2 เข้าไป คือได้ประมาณ 64 connections (ค่อยดูมากหน่อย)

set-variable = max_connections = 60
set-variable = max_user_connections = 60

จากนั้นค่อยๆ เพิ่มตัวแปรอื่นๆ

set-variable = max_allowed_packet=1M
set-variable = max_connect_errors=999999
set-variable = table_cache=1200

แล้วดูอาการว่าจะเดี้ยงมากน้อยเพียงใด

นอกจากการปรับแต่ง MySQL แล้วการทำ caching ให้กับ Drupal ก้อเป็นเรื่องที่ดี เช่นการใช้ module สนับสนุนการทำ caching แบบต่างๆ เช่น boots เป็นต้น อ้อเพิ่มการ Maintenance Database สักหน่อยโดยการทำ Optimize ด้วยคำสั่ง mysqlcheck -o -A -p

ใครสนใจศึกษาการปรับแต่งระบบอ่านเพิ่มเติมได้ที่
http://rudd-o.com/archives/2006/03/01/tuning-an-apache-server-in-5-minutes/
http://rudd-o.com/archives/2006/03/02/tuning-a-mysql-server-in-5-minutes/
http://genomewiki.ucsc.edu/index.php/Tuning-primer.sh

หมายเหตุ การปรับแต่งต้องอาศัยระยะเวลาและการดูแลอย่างเอาใจใส่ ควรนั่งดูและปรับแต่งอย่างน้อย 1-2 สัปดาห์