[Golang]ทำ Profiling ระบบ web application

Smalldog124
2 min readAug 18, 2019

--

เนื่องจาก 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 ยังไม่อีกหลายอย่างให้ดูสามารถอ่านคำสั่งอื่นๆได้ที่

--

--

No responses yet