เครื่องมือในการทดสอบ
Web Server OS : Ubuntu 14.04 LTS
Client OS : Windows 8.1
Software : Apache Jmeter 2.11
Environment :
Web Server
Ubuntu Server (Oracle VM VirtualBox)
Intel Haswell 1.6GHz (2.30GHz) 4 core RAM 512G
Client
Windows 8.1 (Physical Notebook)
Intel Haswell 1.6GHz (2.30GHz) Intel Haswell 4 core RAM 8G
– รันอยู่บนเครื่องเดียวกัน
– ใช้ค่า Default ไม่มีการ Tuning เพิ่มเติม
วิธีการทดสอบ
1. ทำการตั้งค่า Apache ให้อยู่คนละ Port กับ Lighttpd
2. ทำการสร้าง Static Page โดยมีตำแหน่ง และ HTML Code (index.html) ดังนี้
Apache : /var/www/html/index.html
สำหรับ Apache ให้ rename ไฟล์เดิมก่อนเนื่องจากมีไฟล์อยู่แล้วด้วยคำสั่งดังนี้
sudo mv /var/www/html/index.html /var/www/html/index.html_bak
Lighttpd : /var/www/index.html
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Webserver test</title> </head> <body> This is a webserver test page. </body> </html>
3. เปิดโปรแกรม Jmeter ทำการ Add Thread Group, HTTP Request, View Results Tree และ Graph Results
4. ทำการทดสอบโดยชี้ไปที่ Web Site ของ Web Server ที่ต้องการ โดยมีตัวอย่างดังรูป
(จะสังเกตุว่ามีการตั้งค่า Timeout = 1500 ms เพื่อป้องกันโปรแกรมค้าง เนื่องจาก Web Server ไม่ยอมตอบ)
*หมายเหตุ ระหว่างรัน Test สามารถตรวจสอบการทำงานของเครื่อง Web Server โดยติดตั้งโปรแกรมชื่อ htop ดังนี้
sudo apt-get install -y htop
พิมพ์คำสั่ง htop จะปรากฎหน้าจอดังรูป
การตั้งค่าทดสอบ
Number of Threads (users) : | 500,1000,2000,2500,3000 |
Ramp-Up Period (in seconds) : | 1 |
Loop Count : | 1 |
ตัวอย่างการทดสอบ
จำนวน Users ที่เปิด Page ไม่สำเร็จ
Number of Threads (users) | 500 | 1000 | 2000 | 2500 | 3000 |
Apache2 | 0 | 28 | 424 | 2232 | Jmeter Hang |
Lighttpd | 0 | 0 | 3 | 1418 | Jmeter Hang |
ซึ่งการทดสอบแบบไม่มีการ Tuning อาจจะไม่ Fair สำหรับแต่ละ Web Server (แม้ผลจะออกมาชัดว่า Lighttpd เหนือกว่า) เพราะยังไม่ได้มีการดึงประสิทธิภาพหรือตั้งค่า Limit Connection ให้รองรับได้สูงสุด และยังมีในส่วนของ Cache หลาย ๆ แบบที่จะช่วยให้ไม่ต้องประมวลผล Page เดิม ๆ ซ้ำบ่อย ๆ แต่ถึงกระนั้นวิธีนี้เป็นวิธีการหนึ่งที่ใช้ในการทดสอบก่อนจะมีการใช้งานจริง เพื่อทำให้เราเตรียมการได้ทันท่วงที เช่นทดสอบแล้วมีบ้าง SQL ที่ใช้เวลานานกว่าปกติ หรือ database connection limit
สำหรับ Jmeter นั้นสามารถทำอะไรได้อีกมากมาย สามารถเขียน Script ในลักษณะของ Batch Job เพื่อดู Flow การทำงานของทั้ง Web Database และอื่น ๆ ถ้าใครอยากศึกษาเพิ่มเติมสามารถหาอ่านได้จาก Google ทั่ว ๆ ไปครับ
Reference :
[1] http://www.cyberciti.biz/tips/howto-performance-benchmarks-a-web-server.html
Comments are closed.