[Gluster-users] another look at high concurrency and cpu usage

Arvids Godjuks arvids.godjuks at gmail.com
Tue Feb 16 15:59:44 UTC 2010


John Madden

Storing PHP sessions on Gluster FS really isn't a good option, because
session file is locked while scripts access it. You will definetly hit
a performance issue. My advice is to setup a memcached server and use
memcache (or memcached) PHP module's ability to store session data in
memcache server. It has the capability to provide a fault-tolerant
service if you setup a few memcached servers. And it's lightning fast.

2010/2/15 John Madden <jmadden at ivytech.edu>:
> I've made a few swings at using glusterfs for the php session store for a
> heavily-used web app (~6 million pages daily) and I've found time and again
> that cpu usage and odd load characteristics cause glusterfs to be entirely
> unsuitable for this use case at least given my configuration. I posted on
> this earlier, but I'm hoping I can get some input on this as things are way
> better than they were but still not good enough.  I'm on v2.0.9 as the 3.0.x
> series doesn't seem to be fully settled yet, though feel free to correct me
> on that.
>
> I have a two-nodes replicate setup and four clients.  Configs are below.
>  What I see is that one brick gets pegged (load avg of 8) and the other
> sites much more idle (load avg of 1).  The pegged node ends up with high run
> queues and i/o blocked processes.  CPU usage on the clients for the
> glusterfs processes gets pretty high, consuming at least an entire cpu when
> not spiking to consume both.  I have very high thread counts on the clients
> to hopefully avoid thread waits on i/o requests.  All six machines are
> identical xen instances.
>
> When one of the bricks is down, cpu usage across the board goes way down,
> interactivity goes way up, and things seem overall to be a whole lot better.
>  Why is that?  I would think that having two nodes would at least result in
> better read rates.
>
> I've gone through various caching schemes and tried readahead, writebehind,
> quick-read, and stat-prefetch.  I found quick-read caused a ton of memory
> consumption and didn't help on performance.  I didn't see much of a change
> at all with stat-prefetch.
>
> ...Any thoughts?
>
> ### fsd.vol:
>
> volume sessions
>  type storage/posix
>  option directory /var/glusterfs/sessions
>  option o-direct off
> end-volume
> volume data
>  type storage/posix
>  option directory /var/glusterfs/data
>  option o-direct off
> end-volume
> volume locks0
>  type features/locks
>  option mandatory-locks on
>  subvolumes data
> end-volume
> volume locks1
>  type features/locks
>  option mandatory-locks on
>  subvolumes sessions
> end-volume
> volume brick0
>  type performance/io-threads
>  option thread-count 32 # default is 16
>  subvolumes locks0
> end-volume
> volume brick1
>  type performance/io-threads
>  option thread-count 32 # default is 16
>  subvolumes locks1
> end-volume
> volume server
>  type protocol/server
>  option transport-type tcp
>  option transport.socket.nodelay on
>  subvolumes brick0 brick1
>  option auth.addr.brick0.allow ip's...
>  option auth.addr.brick1.allow ip's...
> end-volume
>
>
> ### client.vol (just one connection shown here)
>
> volume glusterfs0-hs
>  type protocol/client
>  option transport-type tcp
>  option remote-host "ip"
>  option ping-timeout 10
>  option transport.socket.nodelay on
>  option remote-subvolume brick1
> end-volume
> volume glusterfs1-hs
>  type protocol/client
>  option transport-type tcp
>  option remote-host "ip"
>  option ping-timeout 10server for each request
>  option transport.socket.nodelay onspeed
>  option remote-subvolume brick1
> end-volume
> volume replicated
>  type cluster/replicate
>  subvolumes glusterfs0-hs glusterfs1-hs
> end-volume
> volume iocache
>  type performance/io-cache
>  option cache-size 512MB
>  option cache-timeout 10
>  subvolumes replicated
> end-volume
> volume writeback
>  type performance/write-behind
>  option cache-size 128MB
>  option flush-behind off
>  subvolumes iocache
> end-volume
> volume iothreads
>  type performance/io-threads
>  option thread-count 100
>  subvolumes writeback
> end-volume
>
>
>
>
>
> --
> John Madden
> Sr UNIX Systems Engineer
> Ivy Tech Community College of Indiana
> jmadden at ivytech.edu
> _______________________________________________
> Gluster-users mailing list
> Gluster-users at gluster.org
> http://gluster.org/cgi-bin/mailman/listinfo/gluster-users
>



More information about the Gluster-users mailing list