Reference - Sử dụng autocannon benchmarking tool để testing performance

 

Ok, như bài trước có nói sơ qua Sử dụng ab - Apache HTTP server benchmarking tool để testing performance, hôm nay sẽ nói về tool mình hay dùng cũng liên quan benchmarking đó là autocannon.


Reference - Sử dụng autocannon benchmarking tool để testing performance


Do đi làm có dính đến dự án Nodejs nên hầu như thích sử dụng tool này, nói sơ về nó thì là công cụ benchmarking viết bằng Nodejs nên sử dụng nó trong dự án khá là tiện lợi. OK đi vào chém gió sơ về nó nhé, cách làm thì cũng tương tự như bài trước, chém gió sơ sơ về các tiện ích thôi :)


Reference - Sử dụng autocannon benchmarking tool để testing performance



Trước tiên muốn giải quyết bài toán nào thì sẽ step by step để biết cái tool nó sẽ làm gì trước, khi biết nó rồi thì cứ tính lên mà dùng :)


Check sơ về help thì nó cũng khá đơn giản vì đã chú thích hầu như tận răng rồi :)


Reference - Sử dụng autocannon benchmarking tool để testing performance

Ban đầu chỉ cần 3 tham số sau là đủ để test, tham số này hầu như sẽ theo bạn trong suốt quá trình testing


c/--connections NUM
        The number of concurrent connections to use. default: 10.
  -p/--pipelining NUM
        The number of pipelined requests to use. default: 1.
  -d/--duration SEC
        The number of seconds to run the autocannon. default: 10.


Có thể xem con số default của nó để đưa ra cách tính cho riêng mình, OK,test xem 1 connect đại diện một người dùng thì nó request được bao nhiêu. Đối với autocannon nó sẽ lệ thuộc vào CPU của bạn để chạy cố gắng tạo ra nhiều request có thể.


Bài test sau sẽ tại 1 connections với 1 pipelined


autocannon http://localhost:3000/phamquangloc -c 1 -p 1


Reference - Sử dụng autocannon benchmarking tool để testing performance

Hiên tại nó đang chạy 1 processes thu được kết quả như trên : 2k request, bạn sẽ thu được độ trễ, thời gian trong quá trình kết nối đến server, qua đây bạn sẽ thu được hiệu xuất khi connections kết nối đến server và sự chịu tải của server.


Bài test tiếp theo sẽ nâng pipelined lên 2 và sẽ gọi worker threads, nâng số luồng lên để chạy và test xem sao nhé.


Reference - Sử dụng autocannon benchmarking tool để testing performance


autocannon http://localhost:3000/phamquangloc -c 1 -p 2 -w 2


Bạn sẽ thấy số request đã lên 3k , do đây test ở local nên không bị lỗi, hoặc timeouts nên request được response ngon lành.

Với lưu ý khi dùng benchmarking, bạn nên xem xét kỹ càng vì request lớn xem như đang DDOS hệ thống của bạn, tuỳ vào mục đích sử dụng mà truyền tham số phù hợp.


OK, ở trên autocannon xem như các ví dụ cơ bản để bạn kiểm tra hiệu suất server, có thể hỗ trợ bạn làm report hoặc xây dựng hệ thống lưu trữ định kỳ testing bla bla cũng được. Nó hỗ trợ Json bạn cũng có thể thoải mái dùng.


Reference - Sử dụng autocannon benchmarking tool để testing performance


Ok, xem nhe chém gió sơ sơ về autocannon benchmarking tool , còn khá nhiều điều hay ho lý thú bạn tham khảo thêm trên github, bạn có thể áp dụng vào dự án khi cần thiết. :)


https://github.com/mcollina/autocannon


Nhãn:

Reference - Sử dụng ab - Apache HTTP server benchmarking tool để testing performance

 Lâu lắm rồi mới ngồi viết blog lại, thời gian này khá là bận rộn nên không lâu rồi vẫn chưa viết được bài nào. Hôm nay sẽ không ngồi chém gió chơi chơi về benchmarking tool, có vài tool hay nhưng sẽ nói trước về AB trước nhé. :)

Nói sơ về về Apache HTTP server benchmarking tool - thì nó là tool do apache phát triển, mục đích của nó giúp đánh giá hiệu năng của một web server qua các tác vụ đo lường.

Cách cài đặt thì khá đơn giản, bạn có thể google là ra, vì thời gian có hạn nên hôm nay chỉ chém gió chơi chơi thôi chứ không đi sâu vào cách cài đặt, bởi vì sao tôi nói vậy ? nếu bạn đã quan tâm tới benchmarking , quan tâm tới testing bla bla thì ....


Reference - Sử dụng ab - Apache HTTP server benchmarking tool để testing performance

OK, server thì dựng tạm một json server testing cho nhanh (Hiện tại test local thôi nhé)


Reference - Sử dụng ab - Apache HTTP server benchmarking tool để testing performance

Cuối cùng là ngồi testing thôi :)

Bài thử nghiệm chính tôi muốn 5 người dùng kết nối đến server gởi đồng thời 1000 request.(Tổng 5 người / 1000 request => 1 người 200 request)

Đến đây đôi lúc bạn sẽ không hiểu lắm là cái méo gì là 1000  bởi 5 bla bla, để hiểu hơn về tool bạn phải step by step nhé. Tôi sẽ test từng bước cho bạn hiểu.


ab -n 1 -c 1 http://localhost:3000/phamquangloc


Tôi cung cấp 1 người đại diện và đồng thời 1 người đó chỉ gởi 1 request đến server


Reference - Sử dụng ab - Apache HTTP server benchmarking tool để testing performance


Giờ tôi muốn cung cấp 1 người đại diện sẽ gởi 5 request tới server


Reference - Sử dụng ab - Apache HTTP server benchmarking tool để testing performance


Cứ như vậy bạn sẽ hiểu được cách tính thế là áp vào bài toán lớn sẽ tính ra, giờ là yêu cầu chính như trên sẽ như sau


Reference - Sử dụng ab - Apache HTTP server benchmarking tool để testing performance

Sau khi bài toán đưa ra đáp ứng được scenario móng muốn xem như ổn thoả thì ta sẽ check xem performance nó như thế nào, mỗi bài test tối thiểu chạy 3 lần sẽ mang tính công tâm nhất nhé :)


Reference - Sử dụng ab - Apache HTTP server benchmarking tool để testing performance

Kết quả thu được trong các quá trình test nên lấy kết quả trung bình để phân tích bạn sẽ thu được

Ưu điểm của nó :

Tính được thời gian

Độ dài của của response khi trả về trên request

Thời gian request, tốc độ truyền nhận ...


Qua kết quả trên sẽ phần nào giúp cho bạn có sự tính toán phù hợp cho mỗi dự án. Nó mang tính tương đối để phục vụ vào nhu cầu, đôi lúc không thể áp công thức dự án này cho dự án kia nên tool một phần giúp bạn tính toán tốt hơn để xây dựng hệ thống ok hơn :)


Hiện tại do nhu cầu cá nhân nên nhiêu đây đủ phục vụ rồi, nếu bạn có cần thêm thì tham khảo thêm phần help, hoặc muốn report báo cáo thì có thể tham khảo thêm trong đó sẽ hỗ trợ đầy đủ :)


Nhãn: