为什么还有一半的内存不用却疯狂的用 swap? redis 一直在 loading 中

2021-01-26 11:46:02 +08:00
 blackcurrant

我在用 docker 运行一个大概需要 50 多 G 内存的 redis 。

1:M 25 Jan 2021 23:19:34.834 * Loading RDB produced by version 5.0.8
1:M 25 Jan 2021 23:19:34.834 * RDB age 15094503 seconds
1:M 25 Jan 2021 23:19:34.834 * RDB memory usage when created 50690.37 Mb

但是系统的内存用到 30 多 G 就不再增长,swap 倒是用了很多。

redis 的数据等了很久也始终在 loading 中,不知道问题出在哪

127.0.0.1:6379> keys *
(error) LOADING Redis is loading the dataset in memory
1877 次点击
所在节点    macOS
6 条回复
jindom
2021-01-26 12:04:08 +08:00
不懂,等大佬回复
Osk
2021-01-26 12:06:08 +08:00
MacOS ?
看样子 CPU 不是双路的吧,同好奇原因
monsterxx03
2021-01-26 12:15:38 +08:00
你是 MacOS 的话, docker 实际是跑在虚拟机里的,看外面的 swap 没意义, 你要进去虚拟机, iotop 看下 redis 进程是不是还在读磁盘, 还要检查下 redis 配置有没有设置 maxmemory, 设置了就会一边 loading 一边 evict 数据.

另外这么大的内存, 不要用 keys *
azenk
2021-01-26 12:35:19 +08:00
单 CPU 32G 限制?查查是不是互联结构问题,关键词 UMA NUMA QPI
blackcurrant
2021-01-26 13:18:09 +08:00
这台 Mac mini 的 cpu 是
3.2 GHz 6-Core Intel Core i7
boywang004
2021-01-26 16:46:22 +08:00
check vm.swappiness

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/748448

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX