目前我有三个不同的正在运行的 memcached 实例,每个实例用于一个环境(开发、测试和实时)
所有三个环境都运行相同的 memcached 版本 (1.4.5),且配置略有不同,但 Linux 发行版和机器如下:
开发:Linux 版本 2.6.17-13mdv([电子邮件保护]) (gcc 版本 4.1.2 20070302 (预发布) (4.1.2-1mdv2007.1)) #1 SMP 星期五 3 月 23 日 15:18:36 EDT 2007 Mandriva Linux 版本 2007.1 (官方) 适用于 x86_64 内核 2.6.17-13mdv 在双处理器 x86_64 上 / \l
测试:Linux 版本 2.6.33.2-desktop-2mnb ([电子邮件保护]) (gcc 版本 4.4.3 (GCC) ) #1 SMP 星期四 4 月 15 日 21:34:06 UTC 2010 Mandriva Linux 版本 2010.0 (官方) 适用于 x86_64 内核 2.6.33.2-desktop-2mnb 在 4 处理器 x86_64 上 / \l
居住:Linux 版本 2.6.31.13-server-1mnb([电子邮件保护]) (gcc 版本 4.4.1 (GCC) ) #1 SMP 2010 年 4 月 27 日星期二 21:14:30 EDT Mandriva Linux 版本 2010.0 (官方) 适用于 x86_64 内核 2.6.31.13-server-1mnb 运行于 16 处理器 x86_64 / \l
我的问题是,在实时环境中,所有缓存都是完美的,我设置了一些键/值并且它按预期响应,但是在测试和开发环境中,应用程序设置了一些键/值但无法检索它。
使用 -vvv 记录 memcached 的输出让我了解了当它尝试获取密钥时发生的情况,如下所示:
<40 获取 qZPh2MQDIs%2BXTBrL3C7hiAcClZgOiklYwnz0a0LN6tY%3D 找到密钥 qZPh2MQDIs%2BXTBrL3C7hiAcClZgOiklYwnz0a0LN6tY%3D。0 2700 ?? -nuked by expire
这因过期而被核爆让我有点抓狂,幸运的是我的生活环境还好。
我仔细检查了服务器的 NTP 配置(我想如果日期错误,那么可能是过期时间已经是过去了)结果一切正常,我的缓存预计从现在起持续 10 分钟,所有服务器的时间都是同步的。
那么,有人能帮助我发现出了什么问题吗?
答案1
好的,找到了,问题是即使启用了 NTP 并且“日期”显示正确的本地日期时间,UTC 日期时间也存在配置错误。
解决方案:date +%T -u -s “实际UTC时间”
我不知道为什么即使使用 NTP 也会这样,但如果有人遇到同样的问题,我会提供一些反馈:D