On Wed, Jan 13, 2010 at 2:08 AM, Jarrod Slick <jarrod@xxxxxxxxxxxxxxxxx> wrote:On Jan 13, 2010, at 12:47 AM, Scott Gifford wrote:On Wed, Jan 13, 2010 at 1:31 AM, Jarrod Slick <jarrod@xxxxxxxxxxxxxxxxx> wrote:
Apache Users,
As some of you may or may not know a fairly prominent commercial webserver, LiteSpeed, claims to outperform even a well configured Apache 2.2.x installation by orders of magnitude. They have some internal benchmarks that appear to back this up, but, being a natural skeptic, I wanted to test it out for myself. So I've agreed to pit Apache and LiteSpeed (as well as a few other webservers) against one another in benchmarking tests on a 2x Xeon 5520 machine. I, and hopefully others, will be configuring Apache. LiteSpeed will be configuring their product.
What is the workload you are benchmarking? Static pages, PHP/mod_perl code, CGI, etc.? Is the client a benchmark tool or a browser, and where on the network is it relative to the server? How are you measuring performance (page load times, requests/second, etc.)?-----Scott.Scott,I'm open to suggestions on all fronts, but as it stands we were going to do the following with the ab tool:-small static pages test-large static pages test-hello world php testAnd we were going to also benchmark a wordpress/joomla site in a more "real-world" load simulation test using the tool "siege".For smaller static content that will be fetched multiple times without changing, consider mod_mem_cache, which will avoid most disk I/O for that content. For larger content or content that will just be fetched once or change frequently, consider enabling sendfile or mmap for sending it. For PHP, use a PHP accelerator, such as eAccelerator, APC, or Zend. For larger applications, do your best to configure the different components appropriately, for example with Drupal configure the static _javascript_ and CSS files to be cached with mod_mem_cache, use the PHP accelerator for the code, and if you have any large files make sure you have sendfile or mmap available. If the benchmark client will do any caching, make sure expiration is configured to allow a long cache time. Disable .htaccess unless you need it, so Apache doesn't have to look for it.
Do a dry run while running top and iostat to see where your bottleneck is. Try running Apache under strace to see what it's doing at each request, and get it doing as little as possible. If it is serving a file from the memory cache or with a static mmap, strace should show it making practically no system calls.If you google around for Apache benchmark tuning I'm sure you'll find some other ideas and examples.Good luck!----Scott.