如何确定Redis内存泄漏?

 三光937 发布于 2023-01-08 15:20

从昨天开始,我们的redis服务器逐渐(200MB /小时)使用更多内存,而密钥数量(330K)及其数据(132MB redis-rdb-tools)保持不变.

redis-cli信息的输出显示6.89G使用的内存?!

redis_version:2.4.10
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.6
process_id:3437
uptime_in_seconds:296453
uptime_in_days:3
lru_clock:1905188
used_cpu_sys:8605.03
used_cpu_user:1480.46
used_cpu_sys_children:1035.93
used_cpu_user_children:3504.93
connected_clients:404
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:7400076728
used_memory_human:6.89G
used_memory_rss:7186984960
used_memory_peak:7427443856
used_memory_peak_human:6.92G
mem_fragmentation_ratio:0.97
mem_allocator:jemalloc-2.2.5
loading:0
aof_enabled:0
changes_since_last_save:1672
bgsave_in_progress:0
last_save_time:1403172198
bgrewriteaof_in_progress:0
total_connections_received:3616
total_commands_processed:127741023
expired_keys:0
evicted_keys:0
keyspace_hits:18817574
keyspace_misses:8285349
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:1619791
vm_enabled:0
role:slave
master_host:***BLOCKED***
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
db0:keys=372995,expires=372995
db6:keys=68399,expires=68399

当我们将(.net)客户端代码从BookSleeve 1.1.0.4更新到ServiceStack v3.9.71以准备升级到Redis 2.8时,问题就出现了.但是很多其他的东西都更新到了我们的会话状态存储(也是redis,但是有了ports客户端)没有显示相同的症状.

Redis内存在哪里?我该如何解决它的使用问题?

编辑:我刚刚重新启动此实例并且内存返回到350M并且现在再次攀升.前10个最大的对象仍然是相同的大小,nr 1的范围从100K到25M.密钥的数量已降至270K(之前为330K).

1 个回答
  • 以下是Redis中"隐藏"内存消耗的一些来源:

    Marc已经提到了主设备为从属设备维护的缓冲区.如果一个从站落后于它的主站(因为它运行在一个较慢的盒子上),那么主站将消耗一些内存.

    当检测到长时间运行的命令时,Redis会将它们记录在SLOWLOG区域,这需要一些内存.您可能希望使用SLOWLOG LEN命令检查此处的记录数.

    通信缓冲区也可以占用内存.据我所知,对于旧版本的Redis(和2.4很老 - 你应该真的升级),它是无限的,这意味着如果你在一个点上传输一个大对象,与这个客户端连接相关的通信缓冲区将会增长永不畏缩 如果有许多客户偶尔处理大型对象,则可能是一种可能的解释.如果您使用从Redis中检索非常大的数据的命令(一次性),它也可以作为解释.例如,在存储数百万个密钥的Redis服务器上应用的简单KEYS*命令将消耗大量内存.

    您提到您有大约25 MB的对象.您有404个客户端连接,如果每个客户端需要在某个时间点访问此类对象,它将消耗10 GB的内存.

    2023-01-08 15:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有