gpt4 book ai didi

Redis RDB 比内存使用量 (716MB) 小 (203KB)

转载 作者:可可西里 更新时间:2023-11-01 10:57:55 27 4
gpt4 key购买 nike

我有一个 Redis 实例,它充当 Logstash 的队列和 Sensu 的数据库,所以理想情况下,队列几乎总是空的,因为 Logstash 能够按照提交给 Redis 的速度处理日志,而 Sensu 只存储最近的测量。但是,当我执行检查 Redis 上的内存使用情况时,会说:

root@b7588aa11859:/data# redis-cli 信息 | grep内存
已用内存:751751344
used_memory_human:716.93M
used_memory_rss:774729728
used_memory_peak:754163560
used_memory_peak_human:719.23M
used_memory_lua:154624

但是当我检查 dump.rdb 文件的大小时,它说:

root@b7588aa11859:/data# ls -lah
总计 212K
drwxr-xr-x 2 redis redis 4.0K 4 月 24 日 08:22。
drwxr-xr-x 49 根根 4.0K 4 月 21 日 06:07 ..
-rw-r--r-- 1 redis redis 203K Apr 24 08:22 dump.rdb

Logstash 似乎工作正常;日志流入 Kibana,指标流入 Grafana。

当我运行 rdb -c memory dump.rdb 时,我得到很多使用很少内存的键,只有 topbeat 键(我使用 topbeat 收集指标) 使用大量内存:

数据库,类型,键,size_in_bytes,编码,num_elements,len_largest_element
0,list,"topbeat",797811,linkedlist,1686,986

但是,797811 字节仍然只有 779 KB。

那么为什么 Redis 仍然占用所有内存?在过去的 ~2200 分钟内,它的内存使用量一直以 ~300KB/分钟的速度稳定增长。

这里是一些日志:

1:M 24 Apr 08:22:07.312 * 60 秒内发生 10000 次更改。保存...
1:M 4 月 24 日 08:22:07.333 * 后台保存由 pid 5648 开始
5648:C 24 Apr 08:22:07.346 * 数据库保存在磁盘上
5648:C 24 Apr 08:22:07.362 * RDB:写时复制使用的 1 MB 内存
1:M 24 Apr 08:22:07.449 * 后台保存成功终止
1:M 24 Apr 08:25:07.403 * 60 秒内发生 10000 次更改。保存...
1:M 4 月 24 日 08:25:07.427 * 后台保存由 pid 5657 开始
5657:C 4 月 24 日 08:25:07.462 * 数据库保存在磁盘上
5657:C 24 Apr 08:25:07.473 * RDB:写时复制使用的 1 MB 内存
1:M 24 Apr 08:25:07.527 * 后台保存成功终止
1:M 24 Apr 08:29:07.375 * 60 秒内发生 10000 次更改。保存...
1:M 24 Apr 08:29:07.391 * 后台保存由 pid 5660 开始
5660:C 24 Apr 08:29:07.419 * 数据库保存在磁盘上
5660:C 24 Apr 08:29:07.433 * RDB:写时复制使用的 1 MB 内存
1:M 24 Apr 08:29:07.492 * 后台保存成功终止
1:M 24 Apr 08:33:07.372 * 60 秒内发生 10000 次更改。保存...
1:M 4 月 24 日 08:33:07.396 * 后台保存由 pid 5661 开始
5661:C 24 Apr 08:33:07.423 * 数据库保存在磁盘上
5661:C 24 Apr 08:33:07.435 * RDB:写时复制使用的 2 MB 内存
1:M 24 Apr 08:33:07.496 * 后台保存成功终止

最佳答案

RDB 文件的大小是相同数据加载到内存时的不同表示。

当您需要使用内存时,Redis 的重点是尽可能优化数据访问时间,可能会以优先级为先的方式组织数据访问时间。

与内存优化相反,当 Redis 执行快照到磁盘(RDB 文件)时,优先考虑的不是速度而是限制磁盘消耗,因为如您所知,Redis 不处理文件,它的数据使用后台进程。也就是说,任何写入操作都首先保存在内存中,并且不能完全保证如果出现问题,整个数据都会写入磁盘。

关于Redis RDB 比内存使用量 (716MB) 小 (203KB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com