- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在运行一个应用程序,该应用程序将在内存缓存中加载大约 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/
我们配置了为 1200(20 分钟),但缓存在缓存创建时间一分钟后自动被逐出。 有人可以告诉我如何使缓存在指定的时间段内有效吗? 最佳答案 下面 hazelcast.xml 中的代码片段将“simpl
dot net 的 MemoryCache 驱逐发生在什么时候?如何在控制台应用程序中模拟驱逐?每当我尝试将对象添加到内存缓存直到发生逐出时,我都会得到 OutofMemoryException。 最
这是我的守护进程 apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx spec: selector: matchLabe
我收到以下异常: java.lang.IllegalStateException: Session/EntityManager is closed at org.hibernate.inter
我正在使用 Google Guava CacheBuilder创建一个 Cache实例。我的代码如下所示: return CacheBuilder.newBuilder() .
我是一名优秀的程序员,十分优秀!