Cover image

Load test website ด้วย wrk

27 Nov 2021

Share to:

สวัสดีครับ ในบทความนี้เรามาเรียนรู้วิธีการทํา Load test กับ website ของเรากันนะครับ ก่อนอื่นเรามาดูก่อนครับว่าการทํา load test กับเว็บของเราคืออะไร ทําไปไทําไมครับ

การทํา Load test คืออะไร

การทํา load test คือการทดสอบเว็บของเราว่ารองรับ user ที่เข้ามาใช้งานพร้อมกันได้เท่าไร เพื่อให้แน่ใจว่าเมื่อมี user เข้าใช้งานจริงๆแล้วเว็บของเราจะไป Down ไปซะก่อน ซึ่งเราจะทดสอบโดยการจําลอง http request เข้าไปพร้อมๆกันตามจํานวนที่เรากําหนด เพื่อดูประสิทธิภาพของเว็บ และ Server ของเราครับ

ใช้ wrk ในการทํา load test

wrk คือ HTTP benchmarking tool ทีเอาไว้ทดสอบยิง HTTP Request ไปยัง URL ที่เราระบุ โดยที่เราสามารถกําหนด Option ต่างๆได้ ซึ่งเป็น Open sorce ครับ สามารถเข้าไปดูได้ที่ https://github.com/wg/wrk

วิธีติดตั้งสามารถทําตามลําดับคําสั่งดังนี้ได้เลยครับ

$ sudo apt-get install build-essential libssl-dev git -y

$ git clone https://github.com/wg/wrk.git wrk

$ cd wrk

$ sudo make

$ sudo cp wrk /usr/local/bin

เมื่อติดตั้งเรียบร้อย

ขั้นตอนต่อไป เรามาลอง Load test กันครับ โดยผมจะลอง load test ไปที่เว็บของผมเอง (thiti.dev) ด้วยคําสั่งนี้ครับ

$ wrk -t 12 -c 1000 -d 30s https://thiti.dev/

รายละเอียดของคําสั่ง

  • -t คือ จํานวน thread (-t 12 —> 12 thread)
  • -c คือ จํานวน Connection ที่ต้องการ (-c 1000 —> 1000 connection)
  • -d คือ เวลาที่ต้องการทดสอบ (-d 30s —> 30 sec)

Option อื่นๆ

Usage: wrk <options> <url>
  Options:
    -c, --connections <N>  Connections to keep open
    -d, --duration    <T>  Duration of test
    -t, --threads     <N>  Number of threads to use

    -s, --script      <S>  Load Lua script file
    -H, --header      <H>  Add header to request
        --latency          Print latency statistics
        --timeout     <T>  Socket/request timeout
    -v, --version          Print version details

  Numeric arguments may include a SI unit (1k, 1M, 1G)
  Time arguments may include a time unit (2s, 2m, 2h)

ผลการทดสอบจากการใช้คําสั่งตามด้านบนจะได้ประมาณนี้ครับ

image

จากรูปหมายความว่าใน 30s เรายิงทดสอบไปทั้งหมด 154,921 request มี timeout 2 request ครับ

*คําแนะนําเพิ่มเติมครับ ควรยิงทดสอบจาก Server จะได้ผลที่ดีกว่า เนื่องจาก Server จะมี internet และเครื่องที่เร็วกว่าครับ

Suggestion blogs

วิธีใช้ PuTTy เชื่อมต่อไปยัง google instance

หลังจากที่เขียนบทความเรื่อง วิธีสร้าง VM Instance ใน google developers console ผมยังไม่ได้อธิบายวิธีการใช้ PuTTy เชื่อมต่อไปยัง google instance ในบทความนี้ผมจะมาอธิบายวิธีเชื่อมต่อ PuTTy ไปยัง google instance อุปกรณ์ที่ต้องใช้มีดังนี้โปรแกรม PuTTy ถ้ายังไม่มีโหลดได้ที่นี่-->Clickโปรแกรม PuTTYgen ถ้ายังไม่มีโหลดได้ที่นี่-->Click

Deep clone object in JavaScript

สวัสดีครับ ไม่ได้เขียน Blog มานาน วันนี้เอาซะหน่อยเป็นเรื่องสั้นๆที่เกี่ยวกับการ Clone object ใน Javascriptปกติ Object ใน Javascript จะเป็น Referent type หมายความว่า เมื่อเราสร้าง Object ขึ้นมา มันจะสร้าง Reference variable ไว้ใน Stack memory และใช้ Variable ที่เราประกาศ ชี้ไปยัง data ที่อยู่ในหน่วยความจำส่วนของ Heap memory อีกที

เริ่มต้น DigitalOcean

มาทําความรู้จัก DigitalOcean กันก่อนDigitalOcean เป็น Simple Cloud Hosting คือผู้ให้บริการ Hosting ที่เราสามารถทําอะไรกับเครื่องได้ทุกอย่าง เหมือนกับว่าเรามีเครื่อง server มาใช้ทําอะไรก็ได้ตามที่เราต้องการ จุดเด่นของ DigitalOcean คือ ค่าบริการที่ถูกมาก เริ่มต้นเพียงเดือนละ $5 หรือ ประมาณ 180 บาท นอกจากค่าบริการที่ถูกแล้วยัง **ใช้งานง่าย **อีกด้วย หลังจากที่ผมได้ใช้งานมาสักพัก การ support ปัญหาต่างๆดีมาก


Copyright © 2019 - 2024 thiti.dev |  v1.19.0 |  Privacy policy |  status | 

            วงแหวนเว็บ