压测:Locust 多台压测机环境下,配置 Master 独立提供 redis 服务
一、需求:
redis 服务提供刷用户、存入异常日志等信息。多台压测机环境下,让 Master 独立提供服务,防止数据重复。
二、Master 压测机配置redis服务
# vim /etc/redis.conf
bind 127.0.0.1 10.0.0.10
protected-mode no
三、测试代码 redis 相关配置
- redis服务地址配置: redis_conf.py
local_redis = False # True,本地调试;False 压测环境
_ip: str = '127.0.0.1' if local_redis else '10.0.0.10'
REDIS_URI = {
'ip': _ip,
'port': 6379
}
- Linux环境,当前为slave节点,不加载用户数据: userid.py
from libs.redis_pool import RedisPool
r = RedisPool().redis_conn
def init_userid(user_num: int = 1000, is_new_user=True):
r.flushall()
if platform != 'darwin':
stack_info = stack()[-2].frame.f_locals["options"]
is_master, is_slave = stack_info.master, stack_info.slave
if not is_master and is_slave and (is_master or is_slave):
print("当前为slave节点,不加载用户数据")
return
with r.pipeline(transaction=True) as p:
for i in range(user_num):
p.rpush("torch_user", json.dumps({
"userid": uuid.uuid4().hex[:12] if is_new_user else f"allan{i}"
}))
p.execute()
logger.success("初始化用户id成功!")