壓測服務對RabbitMQ的消費能力


最近運維跟我反饋我負責的應用服務線上監控到消費RabbitMQ消息隊列過慢,目前只有20左右,監控平台會有消息積壓的告警。

開發修改了一版應用服務的版本,提交給我做壓測驗證。

之前沒有做過消息中間件的壓測,網上找了一圈測試方法,並且和開發溝通,最終確認通過壓測RabbitMQ event消息處理的接口來完成本次的壓測驗證。

壓測腳本:

import pika
import multiprocessing as mp
import time


def main(counter):
    routing_key = "busi.mc.event.XXXX"                          # 被壓測的應用服務的key,指定消息的消費者
    credentials = pika.PlainCredentials('guest', 'guest')
    parameters = pika.ConnectionParameters('XXX.XX.XXX.XX',
                                   5672,
                                   '/',
                                   credentials)

    connection = pika.BlockingConnection(parameters)                                         # 連接 RabbitMQ
    channel = connection.channel()                                                           # 創建頻道

    for i in range(1, counter):                                                              # 循環生產信息,供消費者(被壓測的應用服務)消費
        channel.basic_publish(exchange='mc-direct-exchange', routing_key=routing_key,
                      body='{"clientId":"5e8J8aoi4F380gpDS4sdfd","eventType":1}',
                      properties=pika.BasicProperties(
                          content_type="text/plain",
                          delivery_mode=1))
        time.sleep(0.1)
        # if counter % 600 == 0:
        #     time.sleep(1)
    
    connection.close()                        # 關閉連接

def loop_test(counter):
    for i in range(1, counter):
        main()
        if counter % 100 == 0:
            time.sleep(1)                     # 單個頻率  


if __name__ == "__main__":
    # Define an output queue
    output = mp.Queue()

    # Setup a list of processes that we want to run
    processes = [mp.Process(target=main, args=(100000,)) for x in range(20)]    # 消息總條數   並發數

    # Run processes
    for p in processes:
        p.start()

    # Exit the completed processes
    for p in processes:
        p.join()

    # Get process results from the output queue
    # results = [output.get() for p in processes]

    # print(results)

腳本運行后,通過RabbitMQ的web管理后台,查看消費消息的TPS已經可以穩定在200左右,本次驗證通過了~~

 

參考文章:https://www.cnblogs.com/zhaof/p/9774390.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM