จัดการ Download Speed และ Traffic ของ Apache ด้วย mod_cband

อนุชิต

มีปัญหาเรื่อง 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) :

  • kbps: 1024 bits per second
  • Mbps: 1024*1024 bits per second
  • Gbps: 102410241024 bits per second
  • ค่าปริยายคือ kbps.

โควต้าในการรับส่งข้อมูล (transfer quotas) :

  • K: 1000 bytes
  • M: 1000*1000 bytes
  • G: 100010001000 bytes
  • Ki: 1024 bytes
  • Mi: 1024*1024 bytes
  • Gi: 102410241024 bytes
  • ค่าปริยายคือ K.

ระยะเวลา :

  • S: วินาที
  • M: นาที
  • H: ชั่วโมง
  • D: วัน
  • W: สัปดาห์
  • ค่าปริยายคือ S.

เพิ่ม 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 ได้แล้ว :)

บันทึกนี้เขียนที่ GotoKnow โดย  ใน my FOSS

คำสำคัญ (Tags)#apache#mod_cband

หมายเลขบันทึก: 407127, เขียน: 08 Nov 2010 @ 16:55 (), แก้ไข: 28 May 2012 @ 10:40 (), สัญญาอนุญาต: ครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน, อ่าน: คลิก


ความเห็น (0)