Apache vs IIS in Performance?
Greg Merideth asks: "In the midst of my proposal to universally sweep all of our company web servers together I was handed an advertisement from DELL by our CIO with a big circle around two machines that DELL sells with an interesting note. They are identical machines, literally identical machines but the claim is that the Linux 6.2 Apache based machine only supports 20k-100k hits per day while the Windows 2000 IIS based machine (remember, same config) supports 500k-1M hits per day. Now if DELL is claiming that NT, with the same config will out-perform Apache in serving web traffic, how am I supposed to convince my company that Apache and open source is a great way to go? They don't care about open source or Linux, just the performance that they will get from the machines. Where can I get -credible- data to prove that Apache can outperform IIS?"
If I were you, I'd get Dell (or the reseller/vendor, whoever) to drop off a couple of identical machines, configure one with RH6.2 and one with NT, and let you guys test them. Do not be afraid to tweak the Apache server based on your experience and knowledge. That will show management where their skillsets lie.
Run one for a week or two, move the content, and run the other for a couple of weeks. Then bring up the MS licensing costs, the Apache statistics on web presence, etc, along with an "Oh by the way I'm a Unix guy" and see what they say.
If Dell refuses to supply the test machines, make sure and bring that up to your management- Explain that basically the vendor is unwilling to justify their claim. Then you might be able to pick another vendor such as IBM or Compaq. I understand that Compaq has a fairly liberal test/loan program for such things.
Don't sweat the petty things. But do pet the sweaty things.
This page on Dell's site might also be of interest.
Bingo. Dell itself reports July 25, 2000 SPECweb99 results. Compare items 2 and 7 to find a common platform score comparison.
(rank, vendor, system, score, #CPU's, OS)
2* DELL PowerEdge 6400/700 4200 4 Red Hat Linux 6.2
7* DELL PowerEdge 6400/700 1598 4 Win 2000 Adv Server
Go to the SPEC web site. Then search for the SPECweb99 results Dell submitted.
Apparently, they are using Redhat's Tux server, not Apache. I don't know whether they are related but the combination kicks IIS's ass. You can't get much more definitive than the manufacturer's own tests using the recognised industry benchmark.
This page on Dell's site might also be of interest.
Yeahim sure this is informative, its really good to know, I did not know this, but this seems like a typical response from a Linux Enthusiast.
:) But my first thing to do is to take Linux off and throw FreeBSD on there :)
"Oh oh we dont have this feature yet but it WILL be in next version....."
It just seems like well I dont know, and I know Linux is progressing much faster than it has ever before, but I could go do the same thing with FreeBSD and im sure I can max out a switch.....
The main thing I want to say is just that it doesnt seem fair or rather helpful to this guy that a kernel that isnt even production level does what he needs it to.
I suppose you got modded up because you were showing facts about Linux, but Apache runs on many platforms not just Linux
So I dont really know what the point of the post was, other than the fact that a Dell comes with Linux 6.2 => or is that RedHat 6.2?
Jeremy
It's true, IIS has run in ring 0 since 4.0. I think they did this to get a leg-up on apache/zeus/netscape/etc...
:-P
It provides a performance boost, but putting something complex like a webserver (or browser for that matter) into kernelspace is just asking for it.
Having it take the OS down with it on a crash is the best thing you can hope for... what if it doesn't take the kernel down on a crash, but decides to trample all over memory and data instead? It could misbehave and mangle SQL queries from there on in and it could do signifigant damage before it's noticed. I hope that database wasn't too important...
---
Where can the word be found, where can the word resound? Not here, there is not enough silence.
"Where shall the word be found, where will the word resound? Not here, there is not enough silence." -T.S. Eliot
c't (german magazine) compared apache vs. IIS in a quite exhaustive test and made some very interesting points. Though not Win2k was involved the article may give you some hints and it is even available in plain english here
I also found this bit interesting, if you look at the machine that is configured at the top of the ad it has 256 MB and is quoted at 20K-100K hits, and directly below that is the exact same machine with only 64 MB and surprisingly it is quoted at 20K-100K hits. So apprently quadrupling the amount of available hard memory does nothing for the performance of a machine....uh....er something.
Funny and I thought Perl == Paid employment recently located
I test nic cards and no mater what I use gigabit or fast ethernet. I can't get a total thruput of more than 370 MBPS.
I tried similar test with kernel 2.4.0-test8 and nearly got fired for shouting.
I was able to max out my switch and there is no upper limit in sight with the Cisco hardware I curently have available to me.
The 2.2.X TCP stack is NOT multi-threaded.
The same bechmark on the 2.4.X kernel will take your breath away.
Bitcoin pyramid: Join here: http://www.bitcoinpyramid.com/r/1427 it's FREE!
There have been a lot of good posts on this subject, but all that I've read missed the one obvious problem with Dell's claim (or the post): ;)
100k hits per day is just over ONE PER SECOND. A 486 could do better than that.
Even if you assume that peak time on the site is a 6 hour period, you're getting close to four and a half hits a second, which is no big deal.
For some good information on the state and progression of Linux, look at http://www.kegel.com/mindcraft_redux.html
I know, love Open Source, hate MS. But are you open to the possibility that Apache may not perform as well?
This is not a troll, but a serious point for all--make certain that your loves, hatreds, and desires don't over-rule what may be a valid goal.
If the goal for your project (as specified by the powers-that-be) is performance over ethical ideals, then be certain you know what you're really looking for before you go looking.
But then you know that since you are a techie.
:-(
One of the hardest jobs a techie has to do is convince a clueless boss there is more to a job than a rigged benchmark on a 4-color marketing sheet.
Here are some points to bring up:
Since there are more Apache installations than IIS installations, there are more engineers on the market who understand the technology. You can even throw in a few MCSE horror stories for good measure.
IIS will tie you into an NT platform, and in 5 months (when M$ gets the appellate court to delay their case for a few years) the licensing fees are going to shoot way up. Every major consulting firm has given exactly the same prediction to their largest clients, when M$ wins or delays its antitrust case, licensing fees will increase 2x to 10x, and to reserve a major portion of budget for it. If you choose Apache, later you can switch reasonably painlessly to Solaris, linux, or any other system as costs or management changes dictate.
If you are going to serve only static pages, then IIS wins slightly. If you start to generate dynamic content, Apache blows past IIS. Go search the web for some of the other comparisons.
Apache installations are far more stable than IIS, and there is a lot of anecdotal evidence on the web to help you back this up.
When it comes time to add a custom feature to your web servers, an OSS solution like Apache is likely to have it covered, but with IIS you are at the mercy of M$. If a new feature doesn't exist for IIS, you don't stand a chance of convincing M$ to add it. They have a long history of doing only what they want, not what their customers are demanding.
Get creative, or you will be stuck with IIS, and it will be time to find a new job
the AC
Hemos is like...sci-fi fans;he thinks technology is cool, but he hasn't bothered to understand the science it's based on
http://www.flyingbuttmonkeys.com was a 250MHz AMD k6-2 with 32MB of ram and a 4GB IDE hard drive during the past month when it's been repeatedly slashdotted. Twice, it served over 120000 hits an hour, at an average packet rate of more than 1000/sec, without a problem. Lately it got unreliable because of a failing network card, but that's not exactly Apache's fault. 100k hits a day, right. If the slashdotting had been in effect for the whole day, my little Linuxbox would have taken and served 2.88 million hits that day. the load stayed around 0.20. Imaging what a machine with some actual memory and CPU could do!
________________________________________
Napster-to-go says "Fill and refill your compatible MP3 player", which is a lie. It's not MP3. It's WMA with DRM.
I'm SURE Dell has the documentation to confirm that ad. Call and ask to see it. Dell is very good about things like this and you should be able to look it over yourself.
Also, ask to borrow two boxen for evaluation. They'll do it.
With Apache everything is running in user space as multiple processes - Speed Hit Here?
Yup, The apache processes run round robin (far as I know), and that means that you have to flush the CPU cache for each new connection (rotating the memory space). Note, this won't be noticable for anything but the heaviest loads (since regularly scheduled OS context-switches will have the same effect). Additionally, unless you put in enough memory, you're going to have to swap to disk throughout the rotation. This is likely when you have large mod-perl code (I've gotten apache up to 20 meg / worker-process). Additionally, AFAIK, all IO caching is redundant with MP. I THINK there was a shared memory segment that resolved this, but I don't know.
An MT version has no such problem, since the cache lines are valid for all threads, AND if you had 40 threads with 4 - 12 Meg each, it's unlikely that you'll push yourself out to disk.
We're assuming, of course that nobody is using flat-out CGIs. If anyone was, then Apache would win out-right. In a single-tasked, MT environment, you have to initiate an entirely new process space, and before that, you'd have to configure your environment. In Apache, you have ready-to-go worker-processes than can easily exec the CGI, a new worker thread is recreated at a later time. In Windows, I believe there is less process-creation overhead than in UNIX (assumption based on the non-forked model of windows), so the distinction may not be as great.
I definately agree with the added stability inherent with discrete processes. However, it can actually be harder to debug when you have faulty embedded applications (mod-perl), since each worker will have a seperate work-space, you get a different answer every web-page access. Course, on the other hand, MT perl is even less secure.
With MT, you have all the fun of race-conditions and hidden shared variables that clobber each other. Debugging that can be a nightmare. IIS gives you their equivalant of perl / visual basic. I don't really know much about it, but I speculate that it's more integral to IIS than perl is to Apache, and thus is more efficient. Not to mention, perl wasn't designed for the web whereas ASP was.
Now I know we're not focusing on perl here; you could very easily substitute php, or SSI static pages. I discount servlets, since most of your processing time supposedly is taken up in the servlet, and that's independant of the web-server. I assume that servlets are available (in one form or another) for IIS. Hell, if you really liked servlets, you would use it AS the web server.
I've heard that Apache is comming out with an MT version, BUT, here's the problem. In a windows platform, you still have all the negatives of being in server windows platform. Not to mention, Apache is a text-file configuration while windows is a gui based configuration. The two do not mix well. In the UNIX environment, however, our kernel MT model leaves much to be desired. I vaguely recall reports that showed how poorly Linux did in MT compared to other platforms (obviously Solaris, but I think we even lost to Windows). If you compare MT Apache on Linux to Windows, you might get a nasty surprise. I don't know if the situation has been improved for the 2.4 kernel. Hell, Linux isn't even POSIX compliant with MT.
For simple static-page serving, MT apache should accel. Highly optimized C code in tight loops with a fixed number of worker threads could do magic. This avoids all that BS VC++ MFC stuff. But unfortunately, you can't make a sophisticated business around static pages (unless you're into pr0n I guess).
-Michael
-Michael
Is there such a thing? Really?
As well, what's the difference between "supports" and "speed?" Not to mention cost. (I'm sorry, but I just put two Linux servers in place yesterday simply because Microsoft wanted over $5,000.00 for the software licenses alone; Secure Apache came with Red Hat for $170.00.)
The server I have up seems to foot the bill quickly and correctly. What kind of bandwidth are you going to have? Can your BANDWIDTH support that many hits? Do you expect that many hits? Contrast this again with the advantages of Open Source as you see them.
All in all, I thought Linus had to eat crow because IIS really *did* outperform Apache on Linux. Wasn't there a story about that on Slashdot about a month ago?
-- Talonius
My reality check bounced.
I have no idea what the hell you are talking about NT crashing once a day for an IIS installation, most of our production servers have 4 to 5 month uptimes. I've never seen an NT server that is simply serving pages, dynamic or static, crash. Ever. I have seen the box slowed down, but not because of microsoft, but because of Sun's shoddy JVM and Allaire's crappy JRUN installations.
I've witnessed and worked on deployments of sites that bang massive loads, and you know what? If your site is pulling a million hits a day and you're attempting to box that into one server, then you're a complete moron and deserve to suffer those crashes. No OS is going to save you from that.
For huge sites, the network design is just as important as the application design, and if you fail on implenting a solid design - regardless of what OS you are serving off of - you're going to run into problems.
This was taken from Apache's own Performance Notes Site.
IIS may be faster. I actually don't know, because I've never used it. But I will say this: I worked at LinkExchange when we were the number one company in Internet reach (52%). That's right, more eyeballs than AOL, Yahoo, and MSN combined. And we did this using Apache; both for our site, and for our banner network.
Not to start a flame war, but there's also a chance that the performance bottleneck is Linux, and not Apache - LE was using FreeBSD. There's an excellent benchmark of various Unices, which may indicate as much. It well done, but doesn't get going until page 8 or so...
Anyways, be sure to take administrative costs and bandwith constraints before making a decision.
This shows how a bleeding edge webserver, TUX 1.0, running on a tweaked 2.4.0-testX box can outperform a virtually identical box running IIS 5.0. Curiously enough, these are DELL boxes, and the tests were performed by DELL.
I understand that it is hoped that the advanced features of TUX 1.0 will eventually make their way into Apache.
Apache has been designed for correctness and it *chugs* compared to IIS, Netscape/iPlanet or Zeus. But it's stable and works well.
If you need a speed boost try putting a Squid proxy in front of it - it'll really help on static pages / images.
You may find that the Apache 2 Alpha/Beta software performs better than the 1.x line.
If your web server is down then it ain't going to be handling any traffic now, is it?
Do you *really* believe the numbers and statistics handed to you on the glossies? Wouldn't it make you a rather credulous person if you did? These are *salespeople* that make these things up yyou know.
Government of the people, by corporate executives, for corporate profits.
A look through old Slashdot stories will give you ammunition.
:)
I would love to be there for that conversation
Greg: Look, I've researched this and I've determined that Linux/Apache really is the way to go.
CIO: Dell is an industry leader with a multitude of highly qualified people that can produce these benchmarks. Do you have anything you can show me to corroborate you findings?
Greg: Sure. Here are some quotes I printed off Slashdot. Cmdr Taco says that...
CIO: Hold on. Commander who?
Greg: Commander Taco. He runs a website called Slashdot which is owned by VA Linux which is one of the largest Linux concerns.
CIO: So let me get this straight. You want me to rely on some quotes from a man who goes by the name "Commander Taco" who is employed by a company who's business relies solely on the success Linux instead of an established, industry leader like Dell. Let me think about this. No.
Where can I get -credible- data to prove that Apache can outperform IIS?
I know I'm risking a troll rating here, but shouldn't the question be "Where can I get -credible- data to prove which is better?" If you don't have access to the information that Apache kills IIS, how do you know that it is, in fact, better? I'm not saying you should take Dell's advertising at face value, or that IIS is better, but you are presupposing the answer to the question that you (admittedly) don't have the answer to. I suspect Apache would be better on many, if not all fronts, but I don't have any data to back it up either.
+5:offtopic,but anti-American