如何解决redis CPU占用高的问题?以及如何限制Redis CPU使用率?

Sae*_*ati 7 redis

我们继承了一个系统,其中有一个用于排队操作的中央服务器。Redis 被选为排队代理。

偶尔(例如每 2-3 天)redis 服务 CPU 使用率甚至超过 100%。

在此处输入图片说明

我试图阅读日志以查找原因:

tail /var/log/redis/redis-server.log
Run Code Online (Sandbox Code Playgroud)

但它返回空结果。

在此处输入图片说明

我发现这篇文章提出了一些东西。但是 redis 不回答我的命令。

我被困在这一点上,不知道该怎么做以及如何找到问题。另外,有没有办法限制redis的CPU使用量?

Sta*_*ski 5

我还遇到了 redis CPU 使用问题。我的情况是有很多 Redis 连接(客户端),Linux 默认 ulimit 为 1024 个打开文件。

高 CPU 使用率可能是由某些 CPU 密集型操作(例如 smember)引起的。

您还可以使用 SLOWLOG redis 命令来记录长时间运行的命令。

当没有日志且 SLOWLOG 结果时,跟踪问题的最佳方法是跟踪 Redis 进程并查看发生了什么情况。对于我的情况,这是“打开文件过多”错误,但仅在 strace 输出中看到,通过将文件限制的默认 nr 增加到 1024 以上来解决。