为什么redis-py会导致cpu高?

问题描述 投票:0回答:1

我的网站由

tornado
提供支持。在进行压力测试时,我发现
python3
几乎使用了所有CPU,而
redis-server
则使用了一点。所以,我做了一个配置文件,但配置文件结果让我很困惑:

似乎所有

redis-py
操作(
r.xxx()
lua_xxx()
)都需要大量的CPU时间。

我不知道为什么

python3
吃掉所有CPU,因为如果redis请求被阻止,它应该休眠,从而减少CPU使用率。那么,您能告诉我问题出在哪里吗?谢谢!

python concurrency redis tornado redis-py
1个回答
0
投票

我知道已经过去了很多时间,但现在我将 redis-py 与 asyncio 结合使用,遇到了同样的问题。

就我而言,我使用 get_message 方法中的 timeout 参数解决了这个问题,因为没有它,每个异步周期都不会返回 None,从而使我的 CPU 飙升至 100%。

    async with self._redis_conn.pubsub() as pubsub:
        await pubsub.psubscribe("ws-*")

        while True:
            message = await pubsub.get_message(ignore_subscribe_messages=True, timeout=20)
            redis_logger.debug(message)
            if message is not None:
                ...
© www.soinside.com 2019 - 2024. All rights reserved.