This is a discussion on Clustering and Session Management within the PHP Language forums, part of the PHP Programming Forums category; We're running a fairly busy and complex e-commerce website. It's an online retailer. We utilize MySQL for ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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 |
|
|||
|
"Jeff" <spam@lightweb.net> wrote in message
news:f56f21c4.0401140903.151aad83@posting.google.c om... > 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 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 |
|
|||
|
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 |
|
|||
|
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... > 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 > |