การทดสอบประสิทธิภาพ Web Server ประเภท Static Page : Apache2 vs Lighttpd บนเครื่อง Ubuntu 14.04 LTS

เครื่องมือในการทดสอบ
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 กับ Lighttpd2014-05-23_063514

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
2014-05-23_063658

4. ทำการทดสอบโดยชี้ไปที่ Web Site ของ Web Server ที่ต้องการ โดยมีตัวอย่างดังรูป
(จะสังเกตุว่ามีการตั้งค่า Timeout = 1500 ms เพื่อป้องกันโปรแกรมค้าง เนื่องจาก Web Server ไม่ยอมตอบ)
2014-05-23_105637

*หมายเหตุ ระหว่างรัน Test สามารถตรวจสอบการทำงานของเครื่อง Web Server โดยติดตั้งโปรแกรมชื่อ htop ดังนี้

sudo apt-get install -y htop

พิมพ์คำสั่ง htop จะปรากฎหน้าจอดังรูป2014-05-23_065732

การตั้งค่าทดสอบ

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.