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


3

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

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

在此处输入图片说明

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

tail /var/log/redis/redis-server.log

但是它返回空结果。

在此处输入图片说明

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

在这一点上,我仍然坚持如何做以及如何发现问题。另外,有没有办法限制Redis的CPU使用量?


您正在使用具有多个CPU的服务器吗?因为我认为您正在使用太多的cpu内存。
c4f4t0r '16

Answers:


1

我在使用Redis CPU时也遇到了问题。我的情况是许多redis连接(客户端)和linux默认ulimit为1024个打开文件。

某些成员占用大量CPU资源可能会导致较高的CPU使用率。

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

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


1

默认情况下,Redis没有任何限制使用资源,因此,所有资源都取决于服务器的功能。因此,我建议您使用限制配置Redis:

1-编辑此文件:/etc/redis.conf

2-添加内存限制(以字节为单位):maxmemory 536870912

(在我的情况下为512mb,但您必须使用想要/需要的ram限制)

3-同时添加以下规则行:maxmemory-policy volatile-lru

激活此规则后,当最大内存已满时,redis将从缓存中删除较少使用的键,以便为新键分配空间。

如果您想了解更多有关此的信息,请对所有内容进行评论 /etc/redis.conf


问题是关于CPU使用率。
拉尔夫弗里德尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.