currently I have three different running memcached instances, each one for an environment (dev, test and live)
All three environments are running the same memcached version (1.4.5) and configurations with slightly different Linux distros and machines, as follows:
Dev: Linux version 2.6.17-13mdv (email@example.com) (gcc version 4.1.2 20070302 (prerelease) (4.1.2-1mdv2007.1)) #1 SMP Fri Mar 23 15:18:36 EDT 2007 Mandriva Linux release 2007.1 (Official) for x86_64 Kernel 2.6.17-13mdv on a Dual-processor x86_64 / \l
Test: Linux version 18.104.22.168-desktop-2mnb (firstname.lastname@example.org) (gcc version 4.4.3 (GCC) ) #1 SMP Thu Apr 15 21:34:06 UTC 2010 Mandriva Linux release 2010.0 (Official) for x86_64 Kernel 22.214.171.124-desktop-2mnb on a 4-processor x86_64 / \l
Live: Linux version 126.96.36.199-server-1mnb (email@example.com) (gcc version 4.4.1 (GCC) ) #1 SMP Tue Apr 27 21:14:30 EDT 2010 Mandriva Linux release 2010.0 (Official) for x86_64 Kernel 188.8.131.52-server-1mnb on a 16-processor x86_64 / \l
My problem is that in the live environment all caching is perfect, I set some key/value and it responds to as expected, but in the test and dev env the application sets some key/value but fails to retrieve it.
Logging the output of memcached using -vvv gives me some insight about what's happenning when it tries to get the keys as follows:
<40 get qZPh2MQDIs%2BXTBrL3C7hiAcClZgOiklYwnz0a0LN6tY%3D FOUND KEY qZPh2MQDIs%2BXTBrL3C7hiAcClZgOiklYwnz0a0LN6tY%3D. 0 2700 ?? -nuked by expire
This nuked by expire is driving me a little crazy, fortunately my live env is OK.
I double checked the NTP configuration for the servers (I thought that maybe if the date was wrong the expiring was in the past or something) and it's all OK, my cache is expected to last 10 minutes from now and all servers are time-synced.
So, anyone could help me discover what's going wrong?