[Golang]ทำ Profiling ระบบ web application
เนื่องจาก application เราต้องมีการเทสทั้ง functional และ not-functional ในที่นี้เป็นการบันทึกวิธีการทำ not-functional ของภาษา GO
โดยใช้ package ของ
net/http/pprof
เตรียม Code ของ service
จากนั้น build เป็น binary file ของ service ออกมา
ทำการ start service ขึ้นมา จะได้ service ของเราที่ port :8080 และ port ของ profiling :8081
เมื่อ service เราเปิดพร้อมแล้ว เราก็จะทำการยิง load เข้าไปยัง service สามารถใช้เครื่องมื่อง่ายๆ เช่น Apache Wekrbench และ wrk
$ab -k -c 10 -n 1000000 "http://127.0.0.1:8080/"
ในระหว่างที่เรายิง load เข้าไปเราก็จะทำการ run pprof
go tool pprof http://localhost:8081/debug/pprof/profile
รอชักระยะเวลาหนึ่งเราจะได้ผลของการทำ profile ชึ่งจะแสดงค่าการใช้งานของ CPU
หรือจะบันทึกเป็นรูปภาพ png
(pprof) png
และยังสามารถดูแบบรายละเอียดผ่านทางหน้า web เลือกมุมมองต่างๆ และ search regexp
เข้าไปยัง directory ที่ระบบมันสร้างไฟล์ ให้แล้วใช้คำสั่ง
go tool pprof -http=:8888 ชื่อ profile
และตัว pprof ยังไม่อีกหลายอย่างให้ดูสามารถอ่านคำสั่งอื่นๆได้ที่