<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TheHippo &#187; performance</title>
	<atom:link href="http://blog.thehippo.de/tag/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thehippo.de</link>
	<description>if (i=1) throw null;</description>
	<lastBuildDate>Tue, 20 Jul 2010 12:36:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Crashing virtual servers II</title>
		<link>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers-2/</link>
		<comments>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers-2/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 15:48:32 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=54</guid>
		<description><![CDATA[In my last post I wrote about some problems that I had with my virtual server that freezes under heavy load. The improvements I suggested worked really nice but the server still sometimes freezes &#8211; not often as before but it still happened. So I &#8220;googled&#8221; around and also asked at ServerFault.com. It seems that [...]]]></description>
			<content:encoded><![CDATA[<p>In my last <a title="Crashing Virtual Servers" href="http://blog.thehippo.de/2009/08/server/crashing-virtual-servers/" target="_blank">post</a> I wrote about some problems that I had with my virtual server that freezes under heavy load. The improvements I suggested worked really nice but the server still sometimes freezes &#8211; not often as before but it still happened. So I &#8220;googled&#8221; around and also asked at <a title="Serverfault question" href="http://serverfault.com/questions/54943/virtual-server-freeze-apache" target="_blank">ServerFault.com</a>.</p>
<p>It seems that keeping up the the apache mpm_prefork and mod_php will not be the solution anymore. Most sites suggested to use mpm_worker instead, because it uses less memory (and my problem was, that my Apache consumed all my memory). On the other hand there could be some problems with thread-safety, but I liked to give it a try. PHP will not me used as an Apache module any more. Instead we will run PHP as a <a title="FastCGI" href="http://en.wikipedia.org/wiki/FastCGI" target="_blank">FastCGI</a> script.<span id="more-54"></span></p>
<p>A short step by step tutorial for switching from mpm_prefork to mpm_worker with using PHP.</p>
<ul>
<li>Open a terminal session as a root user.
<pre>apt-get install apache2-mpm-worker libapache2-mod-fcgid php5-cgi</pre>
<p>apt will complain about a few things and will remove some of the previous installed packages. After installation make sure that mod_fcgid is enabled.</li>
<li>Edit you /etc/apache2/apache2.conf or /etc/apache2/httpd.conf or any config file that will be parsed by apache and add this:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">AddHandler</span> fcgid-<span class="kw1">script</span> .php</div>
</li>
<li class="li1">
<div class="de1">FCGIWrapper /usr/lib/cgi-bin/php5 .php</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Options</span> ExecCGI <span class="kw2">FollowSymlinks</span> Indexes</div>
</li>
</ol>
</div>
</li>
<li>Now enter you /etc/apache2/sites-available directory and edit all the the files there. Every file should contain at least one &#8220;VirtualHost&#8221; node. Within these &#8220;VirtualHost&#8221; nodes there should be one or two &#8220;Directory&#8221; nodes. If not already there add a new line starting with &#8220;Options&#8221; and add &#8220;Indexes&#8221; and &#8220;ExecCGI&#8221; as parameters on these lines. It should be look like this one:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">Options</span> Indexes <span class="kw2">FollowSymLinks</span> MultiViews ExecCGI</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">AllowOverride</span> AuthConfig</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Order</span> <span class="kw1">allow</span>,<span class="kw1">deny</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">allow</span> <span class="kw1">from</span> <span class="kw1">all</span></div>
</li>
</ol>
</div>
</li>
<li>Restart apache:
<pre>/etc/init.d/apache2 restart</pre>
</li>
</ul>
<p>Hopefully now everything should work as before. If you had enabled eAccelerator or any other byte code cache system or if you had mode some modifications on you php.ini you now have to copy them to your &#8220;new&#8221; php.ini located at /etc/php5/cgi/php.ini</p>
<p>A few things wont work as before, e.g. when use user authentication by PHP and not by htaccess. There are also a few issues I read about, but nothing which affect my sites.</p>
<p>As a result I would say spending this hours messing around with Apache and mod_fcgid was a good investment. My server now need only 90 MB Ram when idle, it was 250 MB Ram before. Even under load memory consumption stays lower as before. I hope this will be the last tweak for I longer time.</p>
<p>Using PHP as a FastCGI script gives you a lot of new options. So if you have a lot of time to spent or very worried about the security of you web server you could use the Apache module <a title="suexec" href="http://httpd.apache.org/docs/1.3/suexec.html" target="_blank">suexec</a> which then could execute the script as a special user and not as the default web server user www-data. It could even use multiple user for each virtual host / directory.</p>
<p>Interesting links:</p>
<ul>
<li><a href="http://brian.moonspot.net/2008/02/13/apache-worker-and-php/" target="_blank">http://brian.moonspot.net/2008/02/13/apache-worker-and-php/</a></li>
<li><a href="http://www.ibm.com/developerworks/linux/library/l-tune-lamp-2.html" target="_blank">http://www.ibm.com/developerworks/linux/library/l-tune-lamp-2.html</a> Tuning Apache and PHP</li>
<li><a href="http://www.ibm.com/developerworks/library/l-tune-lamp-3.html" target="_blank">http://www.ibm.com/developerworks/library/l-tune-lamp-3.html</a> Tuning MySQL</li>
<li><a href="http://ivan.gudangbaca.com/installing_apache2_and_php5_using_mod_fcgid" target="_blank">http://ivan.gudangbaca.com/installing_apache2_and_php5_using_mod_fcgid</a> More detailed instruction how to install mpm_worker and PHP via mod_fcgid</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>eAccelerator on Ubuntu</title>
		<link>http://blog.thehippo.de/2009/08/server/eaccelerator-on-ubuntu/</link>
		<comments>http://blog.thehippo.de/2009/08/server/eaccelerator-on-ubuntu/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 17:34:43 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[eAccelerator]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=19</guid>
		<description><![CDATA[On the last blog I wrote for was an article which described who to install eAccelerator on a Ubuntu server. As this blog entry had a lot of visits I decided to put it on this blog again: PHP is not the fastest scripting language, that truly a fact. Except from optimizing the scripts there [...]]]></description>
			<content:encoded><![CDATA[<p>On the last blog I wrote for was an article which described who to install eAccelerator on a <a title="Ubuntu" href="http://www.ubuntu.com" target="_blank">Ubuntu</a> server. As this blog entry had a lot of visits I decided to put it on this blog again:</p>
<p><a title="PHP" href="http://www.php.net" target="_blank">PHP</a> is not the fastest scripting language, that truly a fact. Except from optimizing the scripts there a few possibilities to speed everything up. One is to install a byte code optimizer and cache on your server. They cache the byte code created by the PHP parser and try to optimise it. So every time some one requests for a page on your server the script does not have to be parsed again. This brings a speedup of 120 &#8211; 250% depending on you script. There are several byte code caching program available, the one I like most is <a title="eAccelerator" href="http://www.eaccelerator.net/" target="_blank">eAccelerator</a>. Sadly eAccelerator is not available through the Ubuntu repositories so you have install them yourself. Here is a short description how to archive this!<br />
<span id="more-19"></span>Everything is done from the terminal as a root user.</p>
<ul>
<li>Prepare you system for compiling a PHP extension:
<pre>apt-get install build-essential php5-dev</pre>
</li>
<li>Choosing a folder for build process. I used &#8220;/usr/local/src/&#8221;</li>
<li>Getting the sources from the eAccelerator site:
<pre>wget <a class="linkification-ext" title="Linkification: http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip" href="http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip">http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip</a></pre>
</li>
<li>Extract and delete the archive
<pre>unzip eaccelerator-0.9.5.3.zip &amp;&amp; rm eaccelerator-0.9.5.3.zip</pre>
</li>
<li>Enter the folder
<pre>cd eaccelerator-0.9.5.3</pre>
</li>
<li>Prepare as a new PHP extension and compilation
<pre>phpize
./configure --enable-eaccelerator=shared</pre>
</li>
<li>Compile and install
<pre>make
make install</pre>
<p>The install process prints out a folder where eAccelerator has been installed. Remember or copy it, you will need this later.</li>
<li>Enabling eAcceletor: Editing your &#8220;php.ini&#8221; or create a new ini file in you conf.d directory of PHP. (You can find them here: &#8220;/etc/php5/&#8221;.) Insert the following:
<pre>zend_extension                  = "/usr/lib/php5/20060613+lfs/eaccelerator.so"
eaccelerator.shm_size           = "0"
eaccelerator.cache_dir          = "/var/cache/eaccelerator"
eaccelerator.enable             = "1"
eaccelerator.optimizer          = "1"
eaccelerator.check_mtime        = "1"
eaccelerator.debug              = "0"
eaccelerator.filter             = ""
eaccelerator.shm_max            = "0"
eaccelerator.shm_ttl            = "0"
eaccelerator.shm_prune_period   = "0"
eaccelerator.shm_only           = "0"
eaccelerator.compress           = "1"
eaccelerator.compress_level     = "7"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"</pre>
<p>In the first line enter the path printed out during the install. In the last line you could enter a directory for the eAccelerator admin tool, if you want to use it.</li>
<li>Create the cache directory:
<pre>mkdir /var/cache/eaccelerator
chown www-data.www-data /var/cache/eaccelerator</pre>
</li>
<li>Restart you Apache!
<pre>/etc/init.d/apache2 restart</pre>
</li>
</ul>
<p>There are a lot of setting in the ini file. The whole list and the description of them could be found here:  <a title="eAccelerator Ini-settings" href="http://eaccelerator.net/wiki/Settings" target="_blank">Ini-settings</a>.</p>
<p>To check if everything is working open up a page on the server that contains the &#8220;php_info();&#8221; command. There should be some thing like this:</p>
<div id="attachment_32" class="wp-caption aligncenter" style="width: 617px"><img class="size-full wp-image-32" title="eAccelerator" src="http://blog.thehippo.de/wp-content/uploads/2009/08/eacclerator.jpg" alt="eAccelerator" width="607" height="98" /><p class="wp-caption-text">eAccelerator</p></div>
<p>Enjoy the speed!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/08/server/eaccelerator-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.228 seconds -->
