Comment your information is 20 years out of date (Score 5, Insightful) 421
You're comparing 1990s Apache to 2013 IIS. If you care to know what your talking about, you may wish to have another look to too what has changed in the last 10-20 years. Here's one example that's not only way out of date, but also wrong even for that time period :
> why is Apache still spawning processes for every request that comes in... don't they realize the overhead of that??).
Prior to the release'of Apache 2.0 in 2000 (fourteen years ago), Apache pre-spawned a group of processes and each process would handle one request AT A TIME. It never spawned a process for each request, it had a pool of processes that were reused. Pretty much just like how modern browsers now run separate tabs in separate processes. The #1 reason for that was to allow Apache to use libraries (like GD) that weren't thread safe. If Apache were multi-thread rather than multi-process, you couldn't use those libraries.
Note also that Apache was designed for SERVER operating systems like Unix, Linux, and BSD, not for a desktop OS. On a server OS, forking a few processes at startup isn't that resource intensive- far less intensive that preloading IE and Office at startup.
Of course like everything in Apache, the multiprocessing is done by a module, so you can still use processes rather than threads if you want to. You can do that and by choosing sane settings for the number of spare processes you won't fork new ones more than a few per hour.
> A lot of the performance reasons that are behind people switching from Apache to Nginx
I tested this very thoroughly. 90% of the performance difference of Nginx, which only occurs on some systems, is that it essentially forced noatime, regardless of the administrator's selection of mount options. Back when noatime wasn't the default, less-knowledgeable admins who didn't know to use noatime would see a significant performance benefit from Nginx vs Apache. Knowledgeable admins would mount with noatime, and find that Apache and Nginx performance was almost identical. Knowledgeable admins would also comment out the 90% of available modules they don't use, like mod_speling, and set MaxClients etc appropriately. With a reasonable configuration, Apache can give better performance than Nginx, depending on which benchmark you choose. In all cases, Apache provides more PREDICTABLE performance because it actually works as documented, while Nginx has documentation copy-pasted from elsewhere, but their code isn't actually the same as server they copy-pasted documentation from.