我们有很多机器在运行 memcached。有些是 32 位的,有些是 64 位的。但都运行 32 位 RHEL由于各种与 Perl 相关的事情。我们分别将它们称为类型 A 和 B。这两种类型都运行 memcached 1.2.8,并通过交换机分配相同数量的内存-m
。每个 memcached 实例都包含相同的数据 - 在此安装中,我们不将其用作分布式哈希,而是将其用作每台机器上的本地存储。一个单独的进程负责定期为每个实例播种新数据。
今天我们注意到所有 64 位机器已开始驱逐项目:
A 型,32 位
STAT curr_items 115208
STAT evictions 0
STAT limit_maxbytes 67108864
B 型,64 位
STAT curr_items 122192
STAT evictions 1049488
STAT limit_maxbytes 67108864
最初我以为 B 型机器使用了更多 RAM,但我误解了rusage
统计数据(请参阅编辑历史)。有人知道为什么 B 型机器会先于其他机器开始驱逐,即使与 A 型机器同时播种了相同的数据?是因为底层硬件是 64 位吗?我在这里表现出对计算机硬件的无知,但只有一种方法可以解决这个问题。
答案1
如果 A 和 B 类型都在 32 位操作系统上,则用户空间应用程序(如 memcached)的对象大小应该没有差异。如果启用/禁用 PAE,则内核可能会出现差异,但即使如此也不会影响用户空间内存使用。
您能发布这两种类型的stats
、、stats sizes
的完整输出stats items
吗?(对于大内存,最后两个可能需要很长时间,但在 67M 的情况下则不是这种情况)。
当然,初始输出为memcached -vv
。