Connecting Tech Pros Worldwide Forums | Help | Site Map

Clustering and Session Management

Jeff
Guest
 
Posts: n/a
#1: Jul 17 '05
We're running a fairly busy and complex e-commerce website. It's an
online retailer. We utilize MySQL for most of our site-based dynamic
data, and then we use Oracle to access inventory and place orders. We
have two seperate machines for database and web application
(reasonably powerful dual xeon 3ghz machines, 6gb ram each).

We're running Apache 1.3.28 with PHP 4.3.3, mod_ssl 2.8.15 and OpenSSL
0.9.6b. We are running MySQL 4.0.16 as our db and Oracle 8.0.5 as the
inventory.

We front the webserver with a Nortel Alteon AD3 load balancer and it's
currently configured for one webserver. The webserver talks to the
database on the back-end (via second network).

We have a second webserver in place but are unable to bring it into
load-balancing because of sessions. We use flat-file sessions and
regularly build 20,000+ each day (cleaned up after 24 hours). We ran
into performance issues using NFS to store the flat files between the
two machines, so we dropped down to one server.

The question is, what is out there to support distributed session
management? I have taken a look at msession but I can't seem to get it
to compile correctly on RedHat Enterprise ES v3. It also seems to want
to use PostgreSQL.

Does anyone have an opinion on which way we should go? I've thought
about using the database to store the sessions, but that would be a
write and read for every pageview.

We store session numbers via cookies, and I thought about using Cookie
persistance with our AD3's, but it seems like that might introduce
other problems in the event of a server going down, etc. I have also
thought about using client-based persistance (IP Address) but that
could possibly throw the load-balancing out of whack with
super-proxies (AOL, etc).

Anyone have any ideas? Are there any super-fast database products that
would be more suited to many small writes and reads?

Thanks,
Jeff

CountScubula
Guest
 
Posts: n/a
#2: Jul 17 '05

re: Clustering and Session Management


"Jeff" <spam@lightweb.net> wrote in message
news:f56f21c4.0401140903.151aad83@posting.google.c om...[color=blue]
> We're running a fairly busy and complex e-commerce website. It's an
> online retailer. We utilize MySQL for most of our site-based dynamic
> data, and then we use Oracle to access inventory and place orders. We
> have two seperate machines for database and web application
> (reasonably powerful dual xeon 3ghz machines, 6gb ram each).
> ...
>....
> Anyone have any ideas? Are there any super-fast database products that
> would be more suited to many small writes and reads?
>
> Thanks,
> Jeff[/color]

The most simplest way is to have a user stay on the same webserver. name the
two servers www1 and www2, this way the entire session stays on one webhead.
(head web server)

But I do not know how your load balancer is working, is it really managing
load? checking the status of the servers cpu/mem etc? monitoring tcp
sessions?

But if you must have data flowing from multiple webheads for every
connection, then use a back end file server for the sessions, mount via NFS
or SAMBA.

BTW, it is best to use GigE on the backchannel.

One of my clients has a similar situation, 4 webheads, and one dual cpu,
raid session server, the webheads send/recieve their session info on the
backchanel to the session server, via http. So it is not simple save session
stuff. I wrote a distributed session management system for them.


--
Mike Bradley
http://www.gzentools.com -- free online php tools


Jochen Buennagel
Guest
 
Posts: n/a
#3: Jul 17 '05

re: Clustering and Session Management


The project I'm working on is running on 30 load-balanced dual-xeon
Apaches. (I'm not aware of how the load balancing works.)

Sessions (we have around 2 million visits/day) are stored in MySql on 4
more of the dual-xeons. The custom session handling routine (using the
standard "session_set_save_handler()") decides which of the DB servers
to go to based on a modulo calculated from the session id. I haven't had
a chance to look at the exact algorithm for this, but it seems to
distribute load fairly evenly between the 4 servers, even if a user gets
his pages from all over the 30 apaches.

Hope this helps,

Jochen

Chung Leong
Guest
 
Posts: n/a
#4: Jul 17 '05

re: Clustering and Session Management


What kind of overhead is there for storing sessions in a database? That's
question I've long thought about but never gotten around to answer.

In the same situation I'd have gone with the simple solution of putting the
session files in a shared folder.

Uzytkownik "Jochen Buennagel" <zang.NOSPAM@buennagel.com> napisal w
wiadomosci news:bu4ebu$pka$04$1@news.t-online.com...[color=blue]
> The project I'm working on is running on 30 load-balanced dual-xeon
> Apaches. (I'm not aware of how the load balancing works.)
>
> Sessions (we have around 2 million visits/day) are stored in MySql on 4
> more of the dual-xeons. The custom session handling routine (using the
> standard "session_set_save_handler()") decides which of the DB servers
> to go to based on a modulo calculated from the session id. I haven't had
> a chance to look at the exact algorithm for this, but it seems to
> distribute load fairly evenly between the 4 servers, even if a user gets
> his pages from all over the 30 apaches.
>
> Hope this helps,
>
> Jochen
>[/color]


Closed Thread