สวัสดีครับ ในบทความนี้เรามาเรียนรู้วิธีการทํา Load test กับ website ของเรากันนะครับ ก่อนอื่นเรามาดูก่อนครับว่าการทํา load test กับเว็บของเราคืออะไร ทําไปไทําไมครับ
การทํา load test คือการทดสอบเว็บของเราว่ารองรับ user ที่เข้ามาใช้งานพร้อมกันได้เท่าไร เพื่อให้แน่ใจว่าเมื่อมี user เข้าใช้งานจริงๆแล้วเว็บของเราจะไป Down ไปซะก่อน ซึ่งเราจะทดสอบโดยการจําลอง http request เข้าไปพร้อมๆกันตามจํานวนที่เรากําหนด เพื่อดูประสิทธิภาพของเว็บ และ Server ของเราครับ
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/
รายละเอียดของคําสั่ง
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)
ผลการทดสอบจากการใช้คําสั่งตามด้านบนจะได้ประมาณนี้ครับ

จากรูปหมายความว่าใน 30s เรายิงทดสอบไปทั้งหมด 154,921 request มี timeout 2 request ครับ
*คําแนะนําเพิ่มเติมครับ ควรยิงทดสอบจาก Server จะได้ผลที่ดีกว่า เนื่องจาก Server จะมี internet และเครื่องที่เร็วกว่าครับ
dpi คืออะไร ?dpi(dots per inch) คือ จํานวนจุด ต่อ 1นิ้ว เป็นหน่วยของ ความละเอียดในการแสดงผลของสื่อแสดงผลประเภทต่าง เช่น หน้าจอ, printer, โปรเจคเตอร์ ฯลฯ หรืออุปกรณ์อื่นใดที่สามารถแสดงภาพได้ ซึ่งเราจะสามารถมองเห็นภาพ ได้ดีที่สุดแค่ความละเอียด (dpi) ของสื่อนั้นๆ เช่น 5dpi หมายถึง ใน 1 ตารางนิ้ว จะมีจุดสี(pixel) จํานวน 5x5 = 10 จุด
โดยปกติแล้วถ้าเราต้องการจะ Copy อะไรซักอย่างเราจะใช้คําสั่ง cp แต่จะไม่สามารถใช้กับโฟลเดอร์ที่มีข้อมูลอยู่ภายในได้ เราจะต้องเพื่ม option -avr เข้าไปดังนี้
การเขียนโปรแกรมสุ่มเลข หรือrandom ในภาษา c, c++ จะใช้ 2 function หลักๆคือ