压测:Redis pubsub 实现 Locust 并发聚合点

本文介绍了如何使用 Redis pubsub 实现 Locust 的并发聚合点,以解决在压测中300并发玩家登录后,一个玩家发送消息并广播给其他玩家时的时延测量问题。通过Redis Pool和Redis pubsub实现业务逻辑,确保所有玩家在接收到消息后的时延能够被准确记录。
摘要由CSDN通过智能技术生成

压测:Redis pubsub 实现 Locust 并发聚合点

一、需求:

步骤:

  • 启一系列玩家比如5000个,300并发,先登录进入系统并保持tcp不断开
  • 其中一个玩家发送消息,记录下发送时间
  • 服务器广播给所有玩家,包括发送者
  • 一段时间后,比如3秒,搜集所有玩家收到消息的时间戳;将这个时间戳减去发送时间,就是每个人收到聊天消息的时延
  • 玩家最短发送消息时间10s
二、问题:

如果并发300,则需要等300人全部登陆后,一个玩家不断发送聊天信息;其他收消息。而Locust 没有并发聚合点,如果有哪个大佬知道有自带的方式请留言告知,谢谢。

三、实现方案:Redis pubsub 实现
  1. Redis Pool
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     redis_pool.py
   Date:          2021/10/29
   Author:        Allan
-------------------------------------------------
"""
import redis
from conf.server.conf import REDIS_URI


def singleton(cls):
    """ 单例模式装饰器 """
    instances = {
   }

    def get_instance(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]

    return get_instance


@singleton
class RedisPool:

    def __init__(self):

        self.<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值