Reference - Chém gió hiệp 2 về RabbitMQ performance với Python dùng pika



Như hôm qua đã chém sơ về cách thức hoạt động RabbitMQ, cũng đã test thử nó chạy như thế nào rồi và kết quả khá là ngon lành. Có thể tham khảo ở bài chém gió về RabbitMQ performance



Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika



Về phương thức test thì không gì là thay đổi, cũng code cũ, RabbitMQ chạy trên host cũ nhưng lần này thay đổi xíu như sau : Ở phấn trước thì tập trung vào message queue và dung lượng message cũng khá nhẹ, một đoạn xíu vậy cũng chưa đã lắm :)


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika



Như trên show ra hết rồi nên tối nay quyết cho nó banh luôn, mục tiêu sẽ là gởi file chứ không gởi text nữa. :) (Mặt ngầu)


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika


Xem sơ về code như sau :

Producer (Sender)


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika


Consumer (Receiver)


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika


Data sẽ là file pdf, chơi luôn file 8.2MB :)


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika



Phát đầu tiên : Cho nó gởi nhưng không nhận message xem nó chơi cỡ nào :)

Message Queue càng lên thì Ram cung lên theo, RabbitMQ server thì vẫn chạy phà phà, không có gì là nặng nề cho lắm, giờ phải đợi thời gian mới nói được. :)


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika


Và message mã hóa theo base64


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika



Lên tới 100 queue là xem thấy Ram lên cao và nhìn thấy có vẻ đuối đuối rồi


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika


Và phát hiện ra một điểm cực kỳ hay, đến một thời điểm đang trên cao đã điều tiết lại Ram và xuống cực kỳ thấp trong khi queue đang tăng dần, và nó giống như quay lại thời điểm bắt đầu để kéo theo. Có lẽ vậy giờ RabbitMQ đã nhẹ nhàng hơn. hay đấy :)


Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika


 Và cứ thế là nó chạy thôi :) thấy lên xuống theo chu kỳ. good



Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika

Và cuối cùng nó đã banh :), banh ở đây là nó không cho các connections nào liên kết vào nó, để đảm bảo nó còn sống, cách duy nhất chỉ dùng được localhost trên chính nó kakaka, chỉ có nước chạy receiver trên chính nó để xả queue, cơ chế nó lên Ram khi bắt đầu get lên xuống tương tự như nhận :)



Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika



Phát thứ hai : Giờ test đơn đơn vừa gởi vừa nhận xem sao, bài test trên phải reboot lại mới test được phát thứ hai kakaka.

Phát thứ hai thì chạy khá ổn định, gởi đi và nhận ok, nói chung duyệt :)



Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika



Reference - Chém gió hiệp 2 về  RabbitMQ performance với Python dùng pika




Qua test sơ sơ chơi cho vui thôi thì thấy khá ok, nói chung được, cuối cùng nhận ra một điều không liên quan như sau : Bà mẹ con GPON ONT iGate GW020 VNPT cho như cục shit, test xíu mà reboot mấy lần, xài xíu chịu không nỗi :(


Nhãn:

Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Lâu lắm rồi mới rảnh rỗi ngồi viết lại, hôm nay ngồi vọc RabbitMQ xem performance nó như thế nào mà nhiều người dùng như vậy. :)


RabbitMQ là phần mềm Opensource message-broker , ban đầu nó thực hiện Advanced Message Queuing Protocol (AMQP) và sau này mở rộng thêm kiến trúc hỗ trợ cho Streaming Text Oriented Messaging Protocol và MQTT protocol, cái này có thể vào trang chủ nó để xem.




Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay




OK, giờ đang phân vân nên chọn máy ảo hay là máy thật, đã test thì chơi lớn luôn lôi cái laptop i5 8Gb win10 ra chơi.


Cái này cài khá đơn giản nên vào đây tải về là cài thôi, nhanh mau lẹ, RabbitMQ không bận tâm việc cài lắm đâu, quan trọng hiểu nó và config cho nó chạy theo yêu cầu mới quan trọng, đây win 10 next next nên nhanh.


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Cuối cùng thì phần cài đặt cũng xong



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Giờ mục đích sẽ như sau : Bài test này sẽ bắt đầu gồm 2 phần, một là sender gởi message sang receiver, tạm hiểu như mô hình rabbitmq là Producer gởi message cho Consumer. Chơi kiểu demo đơn giản vậy mới nhanh thấy :)


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Sau khi ngồi test trên RabbitMQ Management nào là tạo queue name xong tạo exchange gán  Bindings xong, test Publish message kiểm tra thì mọi thứ ok


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay




Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Như tiêu đề RabbitMQ performance, thế là lôi python pika lib và chiến thôi, mục tiêu là tao ra thật nhiều queue, nào là send và receive thật nhiều xem nó banh không :)


pip install pika


Producer (Sender)



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Consumer (Receiver)



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Trước tiên chạy sender trước vì muốn nó có thật nhiều queue xem nó như thế nào, chơi nhiều tab cho nhanh haha. Nói cho vui chứ không khác nào DDOS luôn, nhưng kệ vậy mới xem được nó ngon lành hay không :)


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay




Mới đầu là chạy thấy ngon ngon, lên vài tab nữa là báo đỏ, xem lại memory nó đỏ cmnr, default nó lên 4Gb là đỏ, cảnh báo, thế nào nâng lên 6Gb xem sức tới đâu



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Như vậy queue càng cao thì performance càng cao nhưng vấn đề đang để publish message ồ ạc nhưng nó vẫn gánh nỗi khá là ok, nếu một host bình thường mà request ồ ạc vậy coi như banh luôn.


Nó có cơ chế khi request nhiều quá sẽ khóa lại, đợi ok rồi nhả ra từ từ nên hệ thống lúc nào cũng được an toàn hơn, không bị banh nữa chừng :) nó sẽ theo dõi và đánh vào các Connections, thằng nào mà tào lao là khóa phát, êm êm nói chuyện lại haha.

 Tiếp theo chạy Consumer để nó nhận hết các message queue về, thời gian nhận cũng khá nhanh vì message cũng nhẹ, nên thời gian giải phóng cũng nhanh.


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Sau khi giải phóng hết Queue message thì nó nhẹ nhàng như sau




Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Test thử vừa send vừa nhận 1 triệu message

Sau khi chạy xong kiểm tra thì Message rates cũng tương đối :)



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Tùy vào mục đích bạn cần làm gì thì đưa vào sử dụng từ cách config, nhu cầu vật lý thích ứng ra sao cho phù hợp... Thường các hệ thống lớn người ta mới dùng đến RabbitMQ hoặc Microservice architecture bạn mới biết đến và dùng nó, đa phần là vậy.


Ok chém gió tới đây cũng tạm được rồi, nếu tiếp xúc và trực tiếp test và vọc vạch nghiên cứu thằng này bạn sẽ thấy rất tuyệt vời luôn :)



Nhãn: