To be frank, even if you serve static pages, 15K pages/sec is out of this world. I suggest you use "ab" to benchmark properly, the numbers don't seem right at all.
- Ammar On Nov 18, 2007 2:56 AM, Zaid Amireh <[EMAIL PROTECTED]> wrote: > > Hi Ala'a, > > Every human being is prone to making errors, I am a human being and I > might be wrong if you heartily believe so, if you and your > administration team were able to reach 15,000 RPS on commodity > hardware then I take off my hat in respect to you all, I obviously > need to change my life time career and passion :) > > Anyway, it seems that you already know much more than I do about this > subject, I will step aside from this conversation. > > virtually yours > > Zaid > > > On Nov 17, 2007 6:55 PM, Ala'a Ibrahim <[EMAIL PROTECTED]> wrote: > > Hi Zaid, > > I' so sorry again, but if I didn't say it I wouldn't be sleeping for > days > > :), thanks for the complement, or whatever it was. > > > > anyway back to business, this number I got from the system admins, I > don't > > work on that machine, and I don't really know if it's true or not, but > I'm > > sure this is not happening 24 hours, but as far as I know, it reaches > > something like this during the day, and I also guess there is something > > wrong with your calculation. > > > > let's start by, everytime apache is installed we make sure to change > the > > max simultaneous connections is changed to 1024, and once again it's > not > > RPS, it's the number of requests that can be handled simultaneously, > also, > > for me I've worked on optimizing stuff, and without playing with the OS, > > only PHP, Apache, and of course with APC. > > I managed with an AMD 64 Athlon processor to get a php application that > was > > launched online, to take it up to about 15,000 RPS, also dude, if it > takes 1 > > sec for each page to respond, I guess you are in deep trouble. > > > > Also the use of client caching is so important, I don't think that > anybody > > takes the css, JS, and images files, every time the browser makes a > request, > > this would be so waste of bandwidth, that's why we use Expires, > > Last-Modification-Date, and the E-Tag headers sent, so the user won't > get > > the same data twice, so mostly in the end, the user in most of the times > > just gets the HTML. > > > > also given that we have the DB on another machine, that would remove > it's > > burden from the sever, it's on another server on the same Rack. > > > > and don't think that even when reaching that number the server is > standing > > doing his job well, it would be dying out there, and that's why there is > the > > need for another machine to share this burden with. > > > > So for me I guess 200,000 is so believable to have, just after doing a > good > > job. > > > > > > > > On 11/17/07, Zaid Amireh < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > Dear Ala'a, > > > > > > You are a smart guy whom I respect. I am not going to reply to your > > > highlighted bold comment for obvious maturity reasons :) , on the > > > other hand, the number you claimed (200,000) is beyond absurd and > > > following is my explanation: > > > > > > In PHP, the default value of session.gc_maxlifetime in 1440 seconds, > > > which equals 24 minutes, I will assume that your clients are browsing > > > 3 pages during their session lifetime which is a very low number, but > > > stick with me, it gets interesting. > > > > > > 200,000 * 3 = 600,000 page requests in 24 minutes. > > > > > > each page would contain an average of 5 media elements, also way too > > > low but I'm not gonna stress test you here, so we end up with 6 > > > requests for each page. > > > > > > so 600,000 * 6 requests served in 24 mins = ( (600,000 * 6) / (24*60) > > > ) thats 2500 requests per second. > > > > > > You do know that apache's default of MaxClients (which is max > > > concurrent requests if you don't have keep alive on) is 256 and that > > > you have to change the source code to increase that, right? ever > > > wondered why its hard coded at 256? > > > > > > lets assume you did increase the cap and you are happily serving 2500 > > > RPS, I don't know what hardware or software you have, but I can > > > extrapolate on the environment that I operate since its all php and > > > apache after all. > > > > > > I have a dual core Xeon with 2 gigs of RAM, hardware RAID 1, 100mbits > > > uplink, its a decent Dell PowerEdge machine that has been grinding web > > > requests for the last couple of years, it took me 2 months to fully > > > tweak the OS and applications, starting from the VM parameters in the > > > kernel, to the TCP params in the kernel, all the way to tuning gcc > > > compile options to produce an optimized apache binary, APC for php > > > caching, etc ..., trust me, its a blazing fast machine for serving PHP > > > and I hold extreme pride in what I made out of this particular > > > machine. > > > > > > How many clients can this machine serve concurrently? (this machine > > > does not hold the DB btw, it has only apache) > > > At 35 requests per second the CPU is at 20% utilization. > > > At 55 requests per second the CPU is at 40% utilization. > > > At 75 requests per second the CPU is at 70% utilization. > > > I was able to squeez 89 RPS at 100% CPU. (and the CPU was the > > > bottleneck, also bear in mind that the NIC has an onboard processor, > > > thus networking takes almost nothing from the CPU). > > > > > > Want fancy charts with real data? I have attached two charts that show > > > apache's children state and cpu utilization for the last hour, I can > > > also provide you with the last 12 months charts that include apache > > > children stats (busy, idle, waiting...), cpu utilization, memory > > > utilization, hard disk i/o, all that stuff. > > > > > > So for the love of the flying spaghetti monster don't tell me there is > > > a *single* machine out there serving 2500 PHP and static content > > > requests per second unless you back up your claim with real numbers. > > > > > > Good luck with your cluster and if you need anything else we are here > > > to help as much as we can :) > > > > > > virtually yours > > > > > > Zaid > > > > > > > > > > > > > > > > > > On Nov 17, 2007 2:35 PM, Ala'a Ibrahim < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > > > > > On 11/17/07, Zaid Amireh <[EMAIL PROTECTED] > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > you kidding me? 200,000 *concurrent* HTTP sessions on *one* > server? > > > > > whats your session time window? 24 hours? > > > > > > > > > > seriously mate, if you want help, tell me some thing I would > believe. > > > > > > > > > > Zaid > > > > > > > > > > On Nov 15, 2007 5:03 PM, Ala'a Ibrahim < [EMAIL PROTECTED] > > > wrote: > > > > > > well, the problem is that it's a legacy system, and we are not > > planning > > > > to > > > > > > do any development on it right now, we are having about 200,000 > > > > concurrent > > > > > > sessions on that system, and the database server is also already > > loaded, > > > > > > (given too that the apache server is more loaded) that's why > it's > > being > > > > > > clustered upon 2 servers, also the servers are on the same rack, > so > > I > > > > don't > > > > > > think the network latency would be a problem. > > > > > > > > > > > > > > > > > > > > > > > > On 11/15/07, Ammar Ibrahim <[EMAIL PROTECTED]> wrote: > > > > > > > I completely agree, I *guess* it would run much faster on a > > properly > > > > > > designed database. All your queries will be based on an indexed > > column > > > > > > (session_id). A nice trick would be to create a table that is in > > memory, > > > > > > this way you would have blazing speed, but then again, you need > to > > study > > > > the > > > > > > possibility of the database server going offline and the > > consequences. > > > > > > Databases are much easier to scale than a file system based > > solution. > > > > And > > > > > > keep in mind if you apply your own session mechanism that > doesn't > > use a > > > > > > database you might run into problems that are very hard to > > trace/debug > > > > (race > > > > > > conditions). You need to test properly with the load you are > > getting. > > > > There > > > > > > are tools to help you simulate the number of sessions that you > have. > > > > > > > > > > > > > > What you could also do is sharding, which is the technique of > > > > splitting > > > > > > the sessions across more than one database. e.g. you can use a > > hashing > > > > > > function to determine to which Database the session is stored > into. > > As > > > > an > > > > > > example: > > > > > > > > > > > > > > Let's assume you want to create 5 data stores for sessions. > Tables > > > > might > > > > > > be in the same database or a combination of servers/tables. To > make > > it > > > > > > simple let's say we have the tables sessions1 - session5 in one > db. > > By > > > > > > writing a function that allows sessions to be mapped to their > > > > corresponding > > > > > > table, this way you can achieve splitting your number of records > by > > a > > > > factor > > > > > > of 5. If you had a million sessions, on average you will have > around > > > > 200K > > > > > > records in each table. This is a very nice technique for > database > > > > > > optimization in general, the draw back is complexity in > programming, > > and > > > > if > > > > > > you work on a project with less experienced developers I highly > > don't > > > > > > recommend sharding all your app. Just minimize it to Sessions, > which > > is > > > > > > gonna be transparent to the developers working on the project as > > they > > > > will > > > > > > be using the built in session mechanism in PHP, and they don't > have > > to > > > > worry > > > > > > about what's going on in the background. > > > > > > > > > > > > > > It wouldn't be hard to benchmark and see the best fit to your > > problem. > > > > > > > > > > > > > > - Ammar > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Nov 15, 2007 11:38 AM, Zaid Amireh < [EMAIL PROTECTED] > > wrote: > > > > > > > > > > > > > > > > > > > > > > > How many concurrent sessions do you have? whats the size of > a > > > > typical > > > > > > > > session file? you have to know your workload to find the > best > > > > > > > > solution. > > > > > > > > > > > > > > > > Unless you have 1000+ concurrent sessions the only load you > will > > > > > > > > imposing on the DB server is the network overhead, sessions > come > > and > > > > > > > > go and so the table would stay small, with some extra > indexes > > here > > > > and > > > > > > > > there you should be golden. > > > > > > > > > > > > > > > > Then again, even with 1000+ sessions, if the table has > proper > > > > indexes, > > > > > > > > I would assume its still faster than a remote filesystem, > too > > many > > > > > > > > factors to write about in this email. > > > > > > > > > > > > > > > > Zaid > > > > > > > > > > > > > > > > > > > > > > > > On Nov 15, 2007 10:12 AM, Ala'a Ibrahim < > [EMAIL PROTECTED]> > > > > wrote: > > > > > > > > > Well, I'm avoiding the use of database, I don't want to > add an > > > > extra > > > > > > load on > > > > > > > > > the DB server, and don't won't to get a new server for the > > > > sessions > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 11/15/07, Ammar Ibrahim < [EMAIL PROTECTED]> > wrote: > > > > > > > > > > Database? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Nov 15, 2007 7:48 AM, Ala'a Ibrahim < > > [EMAIL PROTECTED]> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > I'm trying to do a small apache cluster, everything > works > > > > fine, > > > > > > except > > > > > > > > > for PHP sessions, as they are stored on the filesystem, I > > tried > > > > using > > > > > > an NFS > > > > > > > > > share to hold the data, it worked fine on the testing > > > > environment,but > > > > > > on the > > > > > > > > > live servers, it wasn't a good idea, as the NFS share kept > > hanging > > > > up, > > > > > > so > > > > > > > > > I'm thinking of using a DRBD filesystem, connected on all > the > > > > nodes, > > > > > > > > > something like a Replica RAID on all the servers, in the > > testing > > > > > > > > > environment, it worked fine, but I wonder if it would be > on > > the > > > > live > > > > > > one, so > > > > > > > > > if anyone thinks this is a bad idea, has a better > solution, or > > has > > > > > > some > > > > > > > > > comments please share it. > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > Ala'a A. Ibrahim > > > > > > > > > > > http://guru.alaa-ibrahim.com/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > Ala'a A. Ibrahim > > > > > > > > > http://guru.alaa-ibrahim.com/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > --------------------------- > > > > > > > > Netiquette -> http://www.dtcc.edu/cs/rfc1855.html > > > > > > > > Netiquette Nazi -> > > > > > > > > > > http://redwing.hutman.net/%7Emreed/warriorshtm/netiquettenazi.htm > > > > > > > > --------------------------- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Ala'a A. Ibrahim > > > > > > http://guru.alaa-ibrahim.com/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > --------------------------- > > > > > Netiquette -> http://www.dtcc.edu/cs/rfc1855.html > > > > > Netiquette Nazi -> > > > > > http://redwing.hutman.net/%7Emreed/warriorshtm/netiquettenazi.htm > > > > > --------------------------- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > --------------------------- > > > > > > Netiquette -> http://www.dtcc.edu/cs/rfc1855.html > > > Netiquette Nazi -> > > > http://redwing.hutman.net/%7Emreed/warriorshtm/netiquettenazi.htm > > > --------------------------- > > > > > > > > > > > > > > > > > > > > > > > -- > > Ala'a A. Ibrahim > > http://guru.alaa-ibrahim.com/ > > > > > > > > > > > -- > --------------------------- > Netiquette -> http://www.dtcc.edu/cs/rfc1855.html > Netiquette Nazi -> > http://redwing.hutman.net/%7Emreed/warriorshtm/netiquettenazi.htm > --------------------------- > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Jolug" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/Jolug?hl=en-GB -~----------~----~----~----~------~----~------~--~---

