On Fri, 17 Sep 2004 10:45:18 -0400
Perrin Harkins <[EMAIL PROTECTED]> wrote:

Hi Perrin,

> Enrico Sorcinelli wrote:
> > I'm glad to announce Apache::Session::Memcached.
> > This module provides a way to use memcached as Apache::Session storage
> > implementation
> 
> I wouldn't recommend using memcached for storing sessions.  Memcached is 
> explicitly unreliable storage.  It is built with the premise that you 
> won't put anything into it that you care about losing.  
> If it gets full, 
> it will simply drop data from storage.  The mechanism for failover 
> across multiple machines also counts on being able to lose all the data 
> from one machine without it being a big deal.

Yes, I know. Probably, a RDBMS as session datastore is currently best (and
economical) solution for multiple frontends. Another solution is a load-balancer
with sticky sessions.

I'm investigating in order to search fastest datastore, so, I wrote also A::S::M
since I worked with memcached in the past and I there was not a Apache::Session
implementation (moreover, this has been a good exercise in order to better
hacking in deep Apache::Session :-))

I've done some basic benchmarks using Apache::Session::Flex with different
datastores and memcached is very fast when sessions number grows (see below).

> Memcached would be better suited to acting as a write-through cache for 
> session data that you store in a database.

Please, can you better explain?

Tnx, for comments! ;-)

by

        - Enrico


---

my Apache::Session(::Flex) benchmark results

***
*** 10 ***
***

----------------
Store: File, Times: 50
----------------
the code took: 0 wallclock secs ( 0.05 usr +  0.01 sys =  0.06 CPU)

----------------
Store: Memcached, Times: 50
----------------
the code took: 0 wallclock secs ( 0.15 usr +  0.00 sys =  0.15 CPU)

----------------
Store: MySQL, Times: 50
----------------
the code took: 1 wallclock secs ( 0.18 usr +  0.03 sys =  0.21 CPU)

----------------
Store: DB_File, Times: 50
----------------
the code took: 0 wallclock secs ( 0.07 usr +  0.01 sys =  0.08 CPU)

----------------
Store: SharedMem, Times: 50
----------------
the code took: 0 wallclock secs ( 0.11 usr +  0.00 sys =  0.11 CPU)

***
*** 100 ***
***

----------------
Store: File, Times: 100
----------------
the code took: 0 wallclock secs ( 0.09 usr +  0.02 sys =  0.11 CPU)

----------------
Store: Memcached, Times: 100
----------------
the code took: 1 wallclock secs ( 0.14 usr +  0.04 sys =  0.18 CPU)

----------------
Store: MySQL, Times: 100
----------------
the code took: 0 wallclock secs ( 0.38 usr +  0.00 sys =  0.38 CPU)

----------------
Store: DB_File, Times: 100
----------------
the code took: 1 wallclock secs ( 0.22 usr +  0.02 sys =  0.24 CPU)

----------------
Store: SharedMem, Times: 100
----------------
the code took: 0 wallclock secs ( 0.32 usr +  0.00 sys =  0.32 CPU)

***
*** 1000 ***
***

----------------
Store: File, Times: 1000
----------------
the code took: 1 wallclock secs ( 0.79 usr +  0.21 sys =  1.00 CPU)

----------------
Store: Memcached, Times: 1000
----------------
the code took: 2 wallclock secs ( 1.21 usr +  0.08 sys =  1.29 CPU)

----------------
Store: MySQL, Times: 1000
----------------
the code took: 5 wallclock secs ( 2.98 usr +  0.17 sys =  3.15 CPU)

----------------
Store: DB_File, Times: 1000
----------------
the code took: 3 wallclock secs ( 1.73 usr +  0.29 sys =  2.02 CPU)

----------------
Store: SharedMem, Times: 1000
----------------
the code took:19 wallclock secs (18.11 usr +  0.94 sys = 19.05 CPU)

***
*** 10000 ***
***

----------------
Store: File, Times: 10000
----------------
the code took:21 wallclock secs ( 9.33 usr + 11.12 sys = 20.45 CPU)

----------------
Store: Memcached, Times: 10000
----------------
the code took:20 wallclock secs (12.45 usr +  1.09 sys = 13.54 CPU)

----------------
Store: MySQL, Times: 10000
----------------
the code took:41 wallclock secs (29.34 usr +  1.25 sys = 30.59 CPU)

----------------
Store: DB_File, Times: 10000
----------------
the code took:33 wallclock secs (14.90 usr +  1.89 sys = 16.79 CPU)

----------------
Store: SharedMem, Times: 10000
----------------
the code took:2657 wallclock secs (2450.79 usr + 196.40 sys = 2647.19 CPU)

-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html

Reply via email to