<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="" type="text/css"?>

<Channel xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:dcterms="http://purl.org/dc/terms/"
         xmlns="http://purl.org/net/rss1.1#"
         xmlns:p="http://purl.org/net/rss1.1/payload#"
         rdf:about="http://www.mountainleverage.com/blogs/jeremy-keiper">

    <title>Jeremy Keiper</title>
    <link>http://www.mountainleverage.com/blogs/jeremy-keiper</link>

    

    <image rdf:parseType="Resource">
        <title>Jeremy Keiper</title>
        <url>http://www.mountainleverage.com/logo.png</url>
    </image>

    <items rdf:parseType="Collection">
        
        <item rdf:about="http://www.mountainleverage.com/blogs/jeremy-keiper/2008/01/10/wordpress-woes">
            <title>wordpress woes</title>
            <link>http://www.mountainleverage.com/blogs/jeremy-keiper/2008/01/10/wordpress-woes</link>
            <description>In the blog-o-sphere, this major player can take down the mightiest of servers in a matter of seconds.</description>
            <p:payload xmlns="http://www.w3.org/1999/xhtml"
                       rdf:parseType="Literal">
<p>As a <a class="external-link" href="http://www.python.org/">Python </a>developer, I have spent very little time investigating <a class="external-link" href="http://www.php.net/">PHP </a>or any of the massive open source projects based on it (<a class="external-link" href="http://drupal.org/">Drupal</a>, <a class="external-link" href="http://www.joomla.org/">Joomla</a>, <a class="external-link" href="http://www.oscommerce.com/">osCommerce</a>, and specifically <a class="external-link" href="http://wordpress.org/">WordPress</a>).&nbsp; During a recent project involving very high concentrated traffic, I became fully aware of the power of PHP on my server's load.</p>
<p>We created an out-of-the-box WordPress site running through <a class="external-link" href="http://www.apache.org/">Apache</a> and dumping data in <a class="external-link" href="http://www.mysql.com/">MySQL</a> on a dedicated linux box with 2 GB of RAM and dual duo-core CPUs at a <a class="external-link" href="http://www.rackspace.com/">very reliable hosting company</a>.&nbsp; With a few plugins enabled, including <a class="external-link" href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a>, our server was delivering fast pages and we saw very low load.&nbsp; All this changed when the client directed users to try out the beta site, specifically a "live blog".</p>
<p>Once we got our server rebooted and directed traffic to a static page, we realized that our combination of Apache, PHP and MySQL could not handle several thousands of hits per hour, including one hundred comments in fifteen minutes.&nbsp; We did a lot of research and came up with a solution combining <a class="external-link" href="http://varnish.projects.linpro.no/">Varnish</a>, <a class="external-link" href="http://xcache.lighttpd.net/">XCache</a>, the use of another server for static files, and tweaks to Apache, WP Super Cache and MySQL configurations.&nbsp; To simulate a tremendous amount of traffic, comment entries and post modifications, we developed tests using <a class="external-link" href="http://jakarta.apache.org/jmeter/index.html">JMeter </a>and ran them on three geographically disperse workstations.&nbsp; The results were extremely helpful for identifying leaks and problems with various elements in the mix.</p>
<p>The lessons learned in this feat of smashing an 800 pound gorilla into a pillbox:</p>
<ul><li>design your tests early</li><li>everyone appreciates a good cache</li><li>WordPress can and will be tamed</li><li>MySQL deserves its own special place in this world<br /></li></ul>
</p:payload>
            <dc:date>2008-01-10T12:45:55-06:00</dc:date>
            <dcterms:modified>2008-01-10T12:45:55-06:00</dcterms:modified>
            <dc:creator>Jeremy Keiper</dc:creator>
            
            
            <dc:subject>Apache</dc:subject>
            
            
            <dc:subject>PHP</dc:subject>
            
            
            <dc:subject>WordPress</dc:subject>
            
            
            <dc:subject>JMeter</dc:subject>
            
            
            <dc:subject>MySQL</dc:subject>
            
        </item>
        
    </items>
</Channel>

