gpt4 book ai didi

linux - 即使未达到 limit_maxbytes,Memcached 也会开始逐出项目

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:42 25 4
gpt4 key购买 nike

我正在运行一个应用程序,该应用程序将在内存缓存中加载大约 6000 万个项目。我在一个存储桶中添加了两台服务器。加载大约 65% 的数据后,我看到两台服务器中都有 130 万个项目被逐出。这些是当时的统计数据。

在服务器 1 上

STAT bytes_written 619117542
STAT limit_maxbytes 3145728000

在服务器 2 上

STAT bytes_written 619118863
STAT limit_maxbytes 3145728000

这是当时 free -m 的输出。

在服务器 1 上

             total       used       free     shared    buffers     cached
Mem: 7987 5965 2021 0 310 441
-/+ buffers/cache: 5213 2774
Swap: 4095 0 4095

在服务器 2 上

             total       used       free     shared    buffers     cached
Mem: 11980 11873 106 0 207 5860
-/+ buffers/cache: 5805 6174
Swap: 5119 0 5119

正如我们所见,在两台服务器上,都未达到 limit_maxbytes。两个地方仅使用了约 600MB。然而,在服务器 2 上,可用内存降至 100 mb。现在我知道缓存为 5.8 GB,并且 linux 可以释放该内存以用于正在运行的进程。但看起来这并没有发生,当内存达到临界水平时,memcached 开始逐出项目。

或者还有其他原因吗? linux 到底什么时候释放缓存? 100 MB 的可用 RAM 对于 Linux 释放缓存来说还不够重要吗?请帮助我理解为什么会发生这种情况。

最佳答案

“slabs”指的是 Memcached 如何分配内存。它将您的数据放入服务器内足够接近(稍大)的内存中,而不是复杂的精确匹配。这意味着它会经常“浪费”不存储数据的内存。

当您使用因子 (-f) 和初始 block 大小 (-s) 选项启动 memcached 服务器时,您可以调整每个潜在插槽的大小。如何设置这些取决于您在缓存中存储的大小组合。

关于linux - 即使未达到 limit_maxbytes,Memcached 也会开始逐出项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21233713/

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