มีปัญหาเรื่อง Apache มาพอสมควรเนื่องจากมีเว็บหนึ่งใน Virtual Host มี traffic เยอะมากจนทำให้เว็บอื่นๆ ที่เป็น Virtual Host เหมือนกันเข้าไม่ได้ ได้ลองพยายามปรับแต่งทั้งโปรแกรมและส่วนอื่นๆ เช่น PHP, MySQL, CMS จนหมดแล้ว สุดท้ายต้องหาวิธีจัดการ bandwidth ของ Apache ให้ได้ ผมมีวิธีการง่ายๆ มานำเสนอ ใช้ mod_cband ครับ :)
mod_cband มักถูกใช้ใน hosting เนื่องจากผู้ให้บริการต้องการจำกัด bandwidth ของเว็บนั้นๆ ต่อเดือน และจำกัดความเร็วในการโหลดหน้าเว็บนั้นๆ เพื่อรักษา bandwidth โดยรวมเพื่อให้เว็บอื่นๆ เข้าใช้งานได้ปกติ ซึ่งการจำกัด bandwidth ลักษณะนี้ได้ผลดีมากเพราะสามารถกำหนดได้เป็นรายเว็บไซต์ เพื่อสร้างเงื่อนไขทางด้านราคาและการทำการตลาด น่าจะพอเห็นภาพกันบ้างแล้วทีนี้เรามาจัดการ Apache กัน อ้อเกือบลืมผมอ้างอิงกับ Ubuntu 10.04 LTS ครับ
เตรียมไลบรารีสำหรับ compile เจ้า mod_cband กันก่อน
apt-get install apache2-prefork-dev
จากนั้นดาวน์โหลด mod_cband ดังนี้
cd /tmp
wget http://cband.linux.pl/download/
tar xzvf mod-cband-0.9.7.5.tgz
cd mod-cband-0.9.7.5
./configure
make
make install
หลังจาก make install แล้ว mod_cband จะติดตั้งตัวเองให้อัตโนมัติ ให้คุณ restart Apache สักรอบแล้วสังเกตที่ error log จะพบว่า ยังไม่ได้ตั้งค่าใน VirtualHost มาดู directive ที่ต้องตั้งค่ากันก่อน
ความเร็วในการรับส่งข้อมูล (transfer speed) :
โควต้าในการรับส่งข้อมูล (transfer quotas) :
ระยะเวลา :
เพิ่ม directive เพื่อเพิ่มคุณสมบัติเรื่องการกำหนดระยะเวลาที่ /etc/apache2/apache2.conf ดังนี้
CBandScoreFlushPeriod 1
CBandRandomPulse On
เพิ่ม scoreboard ให้กับ VirtualHost ดังนี้
mkdir /var/www/scoreboard
chown www-data:www-data /var/www/scoreboard/
ทีนี้มาลองดูตัวอย่างการตั้งค่าใน VirtualHost กันครับ
<VirtualHost 1.2.3.4>
ServerName www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www
CBandSpeed 1024 10 30
CBandRemoteSpeed 20kb/s 3 3
</VirtualHost>
จากตัวอย่างข้างต้น Directive CBandSpeed จำกัดความเร็วของ Apache ทั้งหมดของเว็บ www.example.com มีความเร็วที่ 1024Kbps เปิดให้เชื่อมต่อ 10 request ต่อวินาที และเปิดช่องเชื่อมต่อ 30 Connection ส่วน CBandRemoteSpeed เหมือนกับ CBandSpeed มากำหนดในส่วนของผู้ใช้แต่ละคน
มาดูอีกตัวอย่างนึง
<VirtualHost 1.2.3.4>
ServerName www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www
CBandLimit 100M
CBandExceededSpeed 128 5 15
CBandScoreboard /var/www/scoreboard
CBandPeriod 4W
</VirtualHost>
จาก config ข้างต้น CBandLimit กำหนด traffic อยู่ที่ 1000MB ต่อเดือน โดยให้ download speed มีความเร็วอยู่ที่ 128kbps 5 requests/sec และเปิดช่องเชื่อมต่อ 15 connection
เมื่อตั้งค่าได้ตามใจชอบแล้วสั่ง restart Apache เท่านี้ก็จัดการ bandwidth ของ VirtualHost ได้แล้ว :)
ไม่มีความเห็น