การทดสอบประสิทธิภาพ 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 กับ 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

Read More »

การติดตั้งโปรแกรมตรวจสอบประสิทธิภาพ Server : Apache Jmeter บนเครื่อง Windows

โปรแกรม Jmeter เป็นโปรแกรมสารพัดประโยชน์ใช้สำหรับทดสอบประสิทธิภาพการรองรับโหลดจำนวนมาก โดยในเบื้องต้นผมยังจะไม่อธิบายรายละเอียดโปรแกรมมากนะครับ จะนำเสนอแค่วิธีติดตั้ง และการ Test ในส่วนที่เป็น Web Server แบบไม่มี Script อะไรพิเศษเป็นหลัก แล้ววันหลังค่อยมาเปล่าในส่วนอื่น ๆ เช่นการ Test Load Database, LDAP, FTP, WebService ฯลฯ ถ้ามีโอกาสครับ ความต้องการพื้นฐานสำหรับโปรแกรม Jmeter 1. Java 6 ขึ้นไป 2. OS ซึ่งรองรับทั้ง Unix, Windows วิธีการติดตั้งบน Windows  Test OS : Windows 8.1 1. ติดตั้ง JAVA สามารถทำการ Download และติดตั้งได้จาก http://www.java.com/en/download/index.jsp 2. ดาวน์โหลดโปรแกรม Jmeter ได้จาก http://jmeter.apache.org/download_jmeter.cgi 3. Save file .zip ดังรูป 4. ทำการแตกไฟล์ออกมา และทำการรันไฟล์ ApacheMeter.jar ดังรูป (จะปรากฎเป็น icon java สามารถ double click รันได้เลย) ตัวอย่างการสร้าง Test Plan เพื่อทดสอบ Web Server 1. ทำการสร้าง Thread Group ภายใต้ Test Plan ดังรูป 2. หลังจากนั้นจะปรากฎหน้าต่างให้ตั้งค่าได้ดังนี้ Number of Threads (users) : จำนวนผู้ใช้งานที่ต้องการ ณ เวลานั้น ๆ (concurrent users) Ramp-up Period (in seconds) : เวลาหน่วงในการเพิ่มผู้ใช้งานจนถึงจำนวน Number of Threads ที่ตั้งไว้ เช่น Number of Threads = 300, Ramp-up Period = 60 แสดงว่า ภายใน 60 วินาทีจะมี จำนวนผู้ใช้เข้าสู่ระบบรวม 300 คน (ค่อย ๆ เพิ่มเข้าไปจนครบ 300 ใน 60 วินาที) Loop Count : คือจำนวนรอบที่ทำ ถ้าติด Forever ก็แสดงว่าทำตลอดไป *หมายเหตุ ระวังอย่างตั้งค่าเว่อร์จนเกินไป เครื่องผู้ที่สั่ง Test อาจจะทำงานไม่ไหว Hang ได้ 3. จากนั้นทำการสร้าง Sampler ที่เป็น HTTP Request เพื่อกำหนดค่า config เบื้องต้นที่จำเป็นในการทดสอบ ดังรูป 4. จะปรากฎให้ตั้งค่า หลัก ๆ ถ้าต้องการยิงทดสอบธรรมดา ๆ ให้ใส่เฉพาะ Server Name หรือ IP และ Path เช่น /regist.php ถ้าต้องการยิงหน้าแรกก็ใส่ / เฉย ๆ ดังรูป 5. หลังจากนั้นทำการเพิ่มในส่วนของรายงานผล โดยแนะนำ 2 ตัวคือ View Results Tree และ Graph Results 6. ตัวอย่างผลลัพธ์จาก Results Tree (วิธีการรัน Test ให้กดที่ปุ่ม Play สีเขียว และปุ่ม Stop สีแดงเพื่อหยุด) 7. ตัวอย่างผลลัพธ์ในรูปแบบ Graph

Read More »

การติดตั้ง Lighttpd + PHP5 บนเครื่อง Ubuntu 14.04 LTS

มาเริ่มขั้นตอนการติดตั้งกันเลยครับ วิธีการติดตั้ง Lighttpd Web Server 1. ทำการติดตั้ง Lighttpd ผ่าน apt-get ดังนี้ครับ # sudo apt-get install -y lighttpd 2. ให้ทำการ Restart Lighttpd ด้วยคำสั่ง # sudo service lighttpd restart 3. ทำการทดสอบเข้าใช้งาน HTTP โดยพิมพ์คำสั่ง http://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น http://192.168.99.1 4. ในกรณีที่ต้องการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อเปิด site ดังนี้ sudo lighttpd-enable-mod ssl 5. หลังจากนั้นทำการ สร้าง key จาก default cer (ถ้ามี key จริงสามารถนำมาแทนได้ในภายหลัง) ในกรณีที่ไม่เคยติดตั้ง apache ให้ติดตั้งโปรแกรม ssl-cert ก่อนดังนี้ sudo apt-get install -y ssl-cert ทำการรวม Key โดยสร้างเป็นไฟล์ใหม่ เก็บไว้ที่ /etc/lighttpd/snakeoil.pem sudo sh -c ‘cat /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/private/ssl-cert-snakeoil.key > /etc/lighttpd/snakeoil.pem’ 6. จากนั้นทำการเข้าไปแก้ไฟล์ระบุ เพื่อระบุตำแหน่ง cer ให้ถูกต้อง sudo nano /etc/lighttpd/conf-enabled/10-ssl.conf 7. ทำการแก้ไขข้อความในไฟล์ดังนี้ ssl.pemfile = “/etc/lighttpd/snakeoil.pem” 8. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ # sudo service lighttpd restart 9. ทำการทดสอบเข้าใช้งาน HTTPS โดยพิมพ์คำสั่ง https://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น https://192.168.99.1 *หมายเหตุ วิธีการดู IP ให้พิมพ์ดังนี้ ifconfig ให้วิธีการดูให้สังเกตุตามรูปตัวอย่าง – eth0 เป็น ip จาก nat interface – eth1 เป็น ip จาก bridge interface – lo เป็น ip จาก loopback interface วิธีการเปลี่ยน Lighttpd Server Default Port *ยกตัวอย่างการเปลี่ยนจาก port 80->8081 – เปิดไฟล์ /etc/lighttpd/lighttpd.conf sudo nano /etc/lighttpd/lighttpd.conf – แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter) server.port = 8081 วิธีการติดตั้ง PHP5 เพื่อใช้งานกับ Lighttpd Web Server 1. ทำการติดตั้ง PHP5 ดังนี้ sudo apt-get install php5-cgi 2. ทำการเปิดใช้งาน module เพื่อให้สามารถใช้งาน php บน lighttpd ได้ sudo lighty-enable-mod fastcgi sudo lighty-enable-mod fastcgi-php 3. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ # sudo service lighttpd restart 4. วิธีการสร้างไฟล์ตรวจสอบสามารถทำได้ดังนี้ – เปิดไฟล์ /var/www/info.php sudo sh -c

Read More »

การติดตั้ง Apache2 + PHP5 บนเครื่อง Ubuntu 14.04 LTS

มาเริ่มขั้นตอนการติดตั้งกันเลยครับ วิธีการติดตั้ง Apache2 Web Server 1. ทำการติดตั้ง Apache ผ่าน apt-get ดังนี้ครับ # sudo apt-get install -y apache2 2. ให้ทำการ Restart Apache ด้วยคำสั่ง # sudo service apache2 restart จะเห็นได้ว่าจะมี Warning เกี่ยวกับ Domain Name ไม่ต้องตกใจครับ สามารถใช้งานได้ แต่เพราะยังไม่ได้จด Domain ให้กับ IP เครื่องที่ติดตั้ง ทุกครั้งที่ Restart ก็จะมีการฟ้องจนกว่าจะจดครับ ถ้าไม่ต้องการให้ขึ้น Warning ดังกล่าว ให้ทำการแก้ไขไฟล์ /etc/apache2/apache2.conf ดังนี้ – เปิดไฟล์ /etc/apache2/apache2.conf sudo nano /etc/apache2/apache2.conf – เพิ่มข้อความท้ายไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter) ServerName localhost 3. จากนั้นทำการ Restart Apache อีกครั้งจะไม่พบข้อความ Warning อีกแล้ว # sudo service apache2 restart 4. ทำการทดสอบเข้าใช้งาน HTTP โดยพิมพ์คำสั่ง http://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น http://192.168.99.1 5. ในกรณีที่ต้องการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อเปิด site ดังนี้ sudo a2enmod ssl sudo a2ensite default-ssl 6. จากนั้นให้สั่ง Restart Apache ตามปกติ # sudo service apache2 restart 7. ทำการทดสอบเข้าใช้งาน HTTPS โดยพิมพ์คำสั่ง https://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น https://192.168.99.1 8. ในกรณีที่ต้องการยกเลิกการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อปิด site ดังนี้ sudo a2dismod ssl sudo a2dissite default-ssl 9. จากนั้นให้สั่ง Restart Apache ตามปกติ # sudo service apache2 restart *หมายเหตุ วิธีการดู IP ให้พิมพ์ดังนี้ ifconfig ให้วิธีการดูให้สังเกตุตามรูปตัวอย่าง – eth0 เป็น ip จาก nat interface – eth1 เป็น ip จาก bridge interface – lo เป็น ip จาก loopback interface วิธีการเปลี่ยน Apache Server Default Port *ยกตัวอย่างการเปลี่ยนจาก port 80->8080 1. เปิดไฟล์ /etc/apache2/sites-enabled/000-default.conf sudo nano /etc/apache2/sites-enabled/000-default.conf 2. แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter) <VirtualHost *:8080> 3. เปิดไฟล์ /etc/apache2/ports.conf sudo nano /etc/apache2/ports.conf 2. แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter) Listen 8080 3. จากนั้นให้สั่ง

Read More »

Server High Availability คืออะไร

“เคยได้ยินคำว่า Server เรามี Uptimeถึง 99% ไหม”  High Availability มีชื่อย่อในวงการสั้น ๆ ว่า HA องค์กรหรือหน่วยงานมากมายในปัจจุบันมีการวัดประสิทธิภาพการให้บริการด้วย HA โดยจะมีหน่วยการวัดที่เรียกว่า Uptime ซึ่งคิดจากเวลาเป็น % ของการให้บริการ โดยมีชื่อเรียกระดับการให้บริการตามตารางดังนี้ Availability % Downtime per year Downtime per month* Downtime per week 90% (“one nine”) 36.5 days 72 hours 16.8 hours 95% 18.25 days 36 hours 8.4 hours 97% 10.96 days 21.6 hours 5.04 hours 98% 7.30 days 14.4 hours 3.36 hours 99% (“two nines”) 3.65 days 7.20 hours 1.68 hours 99.5% 1.83 days 3.60 hours 50.4 minutes 99.8% 17.52 hours 86.23 minutes 20.16 minutes 99.9% (“three nines”) 8.76 hours 43.8 minutes 10.1 minutes 99.95% 4.38 hours 21.56 minutes 5.04 minutes 99.99% (“four nines”) 52.56 minutes 4.32 minutes 1.01 minutes 99.999% (“five nines”) 5.26 minutes 25.9 seconds 6.05 seconds 99.9999% (“six nines”) 31.5 seconds 2.59 seconds 0.605 seconds 99.99999% (“seven nines”) 3.15 seconds 0.259 seconds 0.0605 seconds ระดับที่หลายหน่วยงานหรือหลายอุปกรณ์พยายามจะโฆษณา จะอยู่ที่ระดับ Five nines หรือ Uptime 99.999% นั่นเอง ซึ่งจะเห็นได้ว่าจะมี Downtime แค่ 5.26 นาที ต่อปีเท่านั้น ซึ่งมองในด้านอุปกรณ์เครือข่าย จะมีปัจจัยน้อยที่จะทำให้เกิด Downtime แต่ในส่วนของ Server นั่นจะมีปัจจัยมากกว่าเพราะประกอบด้วยอุปกรณ์มากชิ้น แต่ปัญหาดังกล่าวในปัจจุบันน้อยลง หลังจากเข้าสู่ยุคของ Cluster หรือ Cloud เพราะจะมีเครื่องคอยทำงานแทนกันอยู่ตลอดเวลานั่นเอง ตัวอย่างการทำ HA ระดับองค์กร โดยคำว่า HA มักจะใช้คู่กับสิ่งที่เราจะต้องการจะสื่อว่าจะทำอย่างไรให้ระบบมี Uptime สูง ๆ เช่น Server High Availability ก็คือทำให้เครื่อง Server มีการให้สามารถทำงานได้โดยไม่ Hang ไม่ดับ ถ้าใช้กับคำว่า Web Server High Availability ก็หมายความว่า จะทำอย่างไรให้สามารถให้บริการ Web Site โดยไม่มีอาการล่ม ซึ่งบางครั้งเราจะมีการ ตัด Downtime ที่เป็นการวางแผนเอาไว้ก่อนแล้ว หรือเรียกสั้น ๆ ว่าการ Maintenance ระบบนั่นเอง การที่จะทำให้เกิดสิ่งที่เรียกว่า HA ก็มีอยู่

Read More »