stumped - data dissapearing
Lou Kosak
lkosak at gmail.com
Thu Jun 28 14:21:38 UTC 2007
On 6/27/07, Mauro Infantino <plenque at gmail.com> wrote:
> Lou Kosak wrote:
> > I've looked all over and can't seem to figure out why my memcache
> > session data is periodically disappearing. Here's my setup:
> >
> > On one server, I'm running memcached 1.2.2
> >
> > memcached -d -m 1024 -u memcached -l 172.17.10.158 -p 11211
> >
> > On another, I'm running a PHP 5 webapp with ADOdb session handling.
> > I've added functionality to session read, write, and destroy, which
> > looks like this:
> >
> > session write modifications:
> >
> > if($memcache)
> > {
> > if($memcache->set(MEMCACHE_PREFIX_SESSION . "$key",
> > rawurlencode($value), 0, 900)) {
> > Debug::notice('Wrote session data to memcache (' .
> > MEMCACHE_PREFIX_SESSION . $key.')');
> > } else {
> > Debug::notice("Failed to write session data to memcache");
> > }
> > }
> >
> > session read modifications:
> >
> > if($memcache)
> > {
> > $v = $memcache->get(MEMCACHE_PREFIX_SESSION . $key);
> >
> > if($v)
> > {
> > Debug::notice('Retrieved session data from memcache
> > (Skipped DB)');
> >
> > $v = rawurldecode($v);
> >
> > return $v;
> > } else {
> > Debug::notice('Memcache key does not exist: ' .
> > MEMCACHE_PREFIX_SESSION . $key);
> > }
> > }
> >
> > session destroy modifications:
> >
> > if($memcache)
> > {
> > $memcache->delete(MEMCACHE_PREFIX_SESSION . "$key");
> > }
> >
> >
> > memcache stats:
> >
> > [pid] => 14287
> > [uptime] => 105065
> > [time] => 1183003550
> > [version] => 1.2.2
> > [pointer_size] => 64
> > [rusage_user] => 25.541117
> > [rusage_system] => 75.528517
> > [curr_items] => 92466
> > [total_items] => 1896346
> > [bytes] => 69351332
> > [curr_connections] => 4
> > [total_connections] => 1875966
> > [connection_structures] => 526
> > [cmd_get] => 1963660
> > [cmd_set] => 1896346
> > [get_hits] => 1820297
> > [get_misses] => 143363
> > [evictions] => 0
> > [bytes_read] => 1564507648
> > [bytes_written] => 1644336306
> > [limit_maxbytes] => 1073741824
> > [threads] => 1
> >
> > What I'm finding is that while browsing the site, every 5-10 page
> > loads I will see the error "Memcache key does not exist", but I never
> > see "Failed to write session data to memcache". The site is always
> > able to connect to memcache (additional reporting of failed
> > connections is not being triggered). According to $memcache->stats(),
> > I have plenty of free memory space and nothing is being evicted. Does
> > anybody have an idea of what might be causing my data not to be
> > retrieved?
> >
> > Thank you very much!
> >
> I'm not familiar with ADOdb's session handling module, but could it be
> that it only writes session data when it changes? Then you could be
> hitting the
> 900 seconds timeout you're using when writing the session key to memcached.
>
> Also, this could be obvious, but since I don't see it in your code, keep
> in mind that you should also modify the database when writing and
> destroying the session.
>
> Regards,
> Mauro.
>
The ADOdb session code triggers the write() method on every page
serve. It only updates the expiration time in the DB, but with the
memcache code I set() the entire thing for lack of a way to update
only its lifetime. This happens much more often than every 900
seconds for the average user, and in the span of a minute I can watch
a key fail to be retrieved several times (as I said, one in every 5/10
page loads, but often fairly erratically), which makes me think that
expiration is not an issue.
--
Lou Kosak
Affable Gentleman of Leisure
Seattle, WA
More information about the memcached
mailing list