Just over a year ago VMware set a world record for web server performance on 16-core systems. The reason ESX beat native performance is its excellent scalability when compared to the poor scalability of commercial web servers. By implementing multiple web servers in virtual machines on a single host, VMware can drive more web transactions through the host than possible without ESX present. Today I want to update everyone on our work with virtual web servers and repeat my plea: virtualize your web servers now!
The scalability limitations in web servers were investigated and documented by Sreekanth Setty, whose VMworld 2008 presentation is summarized in this graph:
This graph shows four uniprocessor virtual machines outperforming a single four core native configuration. The advantage of the multiple virtual machine configuration improves as virtual machine count increases. Sree has since shown that ESX can beat physical when tested by SPECweb using 4-way virtual machines, which means fewer OS and web server instances to maintain. Most recently Sree updated his results again using an Intel Xeon 5570 and VMDirectPath, which freed a few precious CPU cycles for more web transactions.
It is now beyond doubt that multiple web servers will outperform a single instance on the same hardware. However, some of our customers still challenge our suggestion that those web servers should be run in virtual machines. Some resist the idea of increasing the number of web and OS instances at all. So, let me run down the options here and their ramifications:
- Single web server instance in an OS on a physical server. This is the worst performing configuration, scaling to only 38% of the system’s maximum possible performance.
- Multiple web server instances in a single OS on a physical server. This would deliver the theoretical best possible performance but requires the admin to run the notoriously uncooperative web servers together in a single operating system. I am no web server administrator, but our customers have told me that this is a poor solution for production.
- Multiple web server instances each in their own virtual machine. Excellent performance with web server instances isolated so they cannot harm each other. Sreekanth’s VMworld 2008 work showed this delivering about 80% of the system’s maximum theoretical throughput.
Since the performance the first configuration is so poor I exclude it from consideration in a data center. By instantiating one 3-way virtual machine for a web server, we have nearly matched the physical configuration with no additional maintenance cost. Then we can scale out the virtual web farm using vSphere management tools to deliver a flexible architecture. And by isolating these instances in their own hardened virtual machines, we can guarantee that runaway utilization, zombie processes, and any other cross contamination caused by bad web servers will not harm the farm.