Clustering and Session Management

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jeff

    Clustering and Session Management

    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

    #2
    Re: Clustering and Session Management

    "Jeff" <spam@lightweb. net> wrote in message
    news:f56f21c4.0 401140903.151aa d83@posting.goo gle.com...[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


    Comment

    • Jochen Buennagel

      #3
      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_sa ve_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

      Comment

      • Chung Leong

        #4
        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@bu ennagel.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_sa ve_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]


        Comment

        Working...