Test Performance Apache Web Server with ApacheBench on Windows Server 2012 R2

การทดสอบ Web Server ที่ต้องรองรับผู้ใช้งานจำนวนมาก ที่ Connect เข้ามาในช่วงเวลาเดียวพร้อม ๆ  กัน จำเป็นต้องมีการ Tuning และต้องมีการทดสอบ Performance ที่ได้ซึ่ง Apache ก็มีเครื่องมือที่ชื่อว่า ApacheBench ( ab ) ที่ถูกติดตั้งมาพร้อมกันตอนลง Apache Web Server มีทั้งบน Windows และ Linux เราสามารถใช้งานจากเครื่อง Client ก็ได้ แต่เราจะมาทดสอบกับเครื่อง Server ที่เป็น Windows กัน


Configuration

  • ไปที่ ab จะอยู่ที่โฟลเดอร์ bin ของ Apache
  • เปิด Command Promt แล้วพิมพ์
# C:\> cd C:\AppServ\Apache2.2\bin
  • พิมพืคำสั่ง ab เพื่อดูการใช้งานคำสั่ง
# C:\AppServ\Apache2.2\bin> ab
ab: wrong number of arguments
Usage: ab [options] [http://]hostname[:port]/path
Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make
    -t timelimit    Seconds to max. wait for responses
  • ลองทดสอบ 1,000 คำสั่ง
# C:\AppServ\Apache2.2\bin> ab -n 1000 -c 100 http://localhost/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146
  • ลองมาดูผลลัพธ์กัน
gt; apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Server Software: Apache/2.2.4 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 0 bytes Concurrency Level: 10 Time taken for tests: 0.218677 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1000 Total transferred: 216000 bytes HTML transferred: 0 bytes Requests per second: 4572.95 [#/sec] (mean) Time per request: 2.187 [ms] (mean) Time per request: 0.219 [ms] (mean, across all concurrent requests) Transfer rate: 960.32 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.3 0 15 Processing: 0 1 5.1 0 15 Waiting: 0 1 4.7 0 15 Total: 0 2 5.2 0 15
  • หากระบุ Concurrency มากกว่า 263 จะเกิด Error แบบนี้ คิดว่าน่าจะแล้วแต่เครื่อง ซึ่งเป็น Policy ของ Windows Security โดยปกติไม่น่าจะมี Concurrency เกิน 400
Benchmarking localhost (be patient)

Test aborted after 10 failures

apr_socket_connect(): No connection could be made because the target machine act
ively refused it.   (730061)
Total of 86 requests completed
  •  ข้อมูลที่เราสนใจก็คือ
Concurrency Level : จำนวน connection ต่อ 1 request
Requests per second : จำนวน request ที่รองรับได้ใน 1 วินาที ยิ่งมากยิ่งดี
Time per request : เวลาเฉลี่ยต่อ request ยิ่งน้อยยิ่งดี

Leave a Reply

Your email address will not be published. Required fields are marked *