<?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>UNIXy &#187; Break-Fix</title>
	<atom:link href="http://blog.unixy.net/category/break-fix/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.unixy.net</link>
	<description>Fully Managed Dedicated Servers</description>
	<lastBuildDate>Fri, 03 Feb 2012 17:37:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Varnish &#8220;not responding to CLI, killing it died signal=3&#8243; Explained</title>
		<link>http://blog.unixy.net/2011/12/not-responding-to-cli-killing-it-died-signal3-explained/</link>
		<comments>http://blog.unixy.net/2011/12/not-responding-to-cli-killing-it-died-signal3-explained/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 15:04:28 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Break-Fix]]></category>
		<category><![CDATA[Crash Course]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[cli_timeout]]></category>
		<category><![CDATA[not responding]]></category>
		<category><![CDATA[signal=3]]></category>
		<category><![CDATA[varnish]]></category>
		<category><![CDATA[varnish cache]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=1475</guid>
		<description><![CDATA[Varnish not responding to CLI, killing it died signal=3 Explained]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2011%2F12%2Fnot-responding-to-cli-killing-it-died-signal3-explained%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2011%2F12%2Fnot-responding-to-cli-killing-it-died-signal3-explained%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>We haven&#8217;t seen anyone explain the meaning of following <a title="Varnish" href="http://www.unixy.net/varnish">Varnish</a> error message found in the logs of your <a title="server" href="http://www.unixy.net">server</a> in detail. So here it is for the curious:</p>
<blockquote>
<pre>Dec  5 12:31:31 server varnishd[28446]: Child (28447) not responding to CLI, killing it.
Dec  5 12:31:59 server varnishd[28446]: Child (28447) died signal=3
Dec  5 12:32:03 server varnishd[28446]: child (22431) Started
Dec  5 12:32:04 server varnishd[28446]: Child (22431) said Child starts
Dec  5 12:32:04 server varnishd[28446]: Child (22431) said SMF.s0 mmap'ed 268435456 bytes of 268435456</pre>
</blockquote>
<p>The message above comes from the Varnish Manager. The Manager is the Varnish process (there are two Varnish processes) that monitors and manages the Varnish caching process. Here it&#8217;s telling us that caching process has stopped responding back with a PONG to its PING. A ping from the Manager to the Cache process with its response look like this and happens every 3 seconds (at least in this configuration):</p>
<blockquote>
<pre>    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 132318163<strong>3</strong> 1.0
    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 132318163<strong>6</strong> 1.0</pre>
</blockquote>
<p>So going back to the error message, the Manager is telling us that it hasn&#8217;t received a &#8220;PONG&#8221; back from the Cache process in a while. A &#8220;while&#8221; is controlled by the variable <em>cli_timeout</em> which has a default of 10 seconds in Varnish 3.x and 20 seconds in Varnish 2.x. So the Manager waits for about 10 seconds before it fires a <a title="UNIX" href="http://www.unixy.net">UNIX</a> kill using signal SIGQUIT (signal=3). Next the Manager starts the child back up again afresh.</p>
<p>You may be asking yourself: why is the Cache process not responding? There are a few of possible causes. Either the cache process is deadlocked (deep code issue) or the <a title="server" href="http://www.unixy.net">server</a> is under a very heavy disk IO load / memory shortage. So how do you determine which category you fall under? I recommend checking the load average and memory utilization levels on your server using Sysstat tools.</p>
<p>&nbsp;</p>
<p><em>Did you know?</em></p>
<blockquote><p><strong>UNIXy is a <a title="fully managed server" href="http://www.unixy.net/fully-managed-hosting-promise">fully managed server</a> and cluster provider. What this means is we don&#8217;t expect you to know anything about servers or server management. The good news is it doesn&#8217;t cost you extra to have us manage your UNIXy server! Get in touch with us <a title="UNIXy Contact" href="https://www.unixy.net/secure/contact.php">here</a> to get the ball rolling!</strong></p>
<p>&nbsp;</p></blockquote>
<p>That&#8217;s all folks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2011/12/not-responding-to-cli-killing-it-died-signal3-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx accept() failed (24: Too many open files) while accepting new connection</title>
		<link>http://blog.unixy.net/2010/11/nginx-accept-failed-24-too-many-open-files-while-accepting-new-connection/</link>
		<comments>http://blog.unixy.net/2010/11/nginx-accept-failed-24-too-many-open-files-while-accepting-new-connection/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 19:40:25 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Break-Fix]]></category>
		<category><![CDATA[accept() failed]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[too many open files]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=900</guid>
		<description><![CDATA[The error below is typical in a new Nginx installation for a busy web site. Nginx apparently hits a user resource as well as configuration limitation:

Nginx accept() failed (24: Too many open files) while accepting new connection
here's how to fix this Nginx error.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F11%2Fnginx-accept-failed-24-too-many-open-files-while-accepting-new-connection%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F11%2Fnginx-accept-failed-24-too-many-open-files-while-accepting-new-connection%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>The error below is typical in a new Nginx installation for a busy web site. Nginx apparently hits a user resource as well as configuration limitation:</p>
<blockquote><p>2010/10/30 19:33:23 [alert] 5554#0: accept() failed (24: Too many open files) while accepting new connection on 0.0.0.0:80</p></blockquote>
<p>This means that Nginx reached an imposed limit (read: artificial) on the number of files it can open simultaneously. Without further delay, here&#8217;s how to fix this error.</p>
<p>The fix is simple and consists of two lines worth of changes. The first change needs to be done in the startup script of Nginx (/etc/init.d/nginx for example). Add the following line at the top right after the shell script interpreter location (shebang):</p>
<blockquote><p>ulimit -n 65535</p></blockquote>
<p>Then open the nginx configuration file (default: /etc/nginx/nginx.conf) and the following line right after the &#8220;worker_processes&#8221; entry line</p>
<blockquote><p>worker_rlimit_nofile 20480;</p></blockquote>
<p>Once both changes are made, run the Nginx lint to make sure no errors have been introduced:</p>
<blockquote>
<div id="_mcePaste"># nginx -t</div>
<div id="_mcePaste">2010/11/01 17:07:46 [info] 9520#0: the configuration file /etc/nginx/nginx.conf syntax is ok</div>
<div id="_mcePaste">2010/11/01 17:07:46 [info] 9520#0: the configuration file /etc/nginx/nginx.conf was tested successfully</div>
</blockquote>
<div>and then restart Nginx</div>
<blockquote>
<div>/etc/init.d/nginx restart</div>
</blockquote>
<div>That&#8217;s all folks! We hope this was useful.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2010/11/nginx-accept-failed-24-too-many-open-files-while-accepting-new-connection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx + Drupal + imagecache + Apache + proxy_pass + 404</title>
		<link>http://blog.unixy.net/2010/09/nginx-drupal-imagecache-apache-proxy_pass-404/</link>
		<comments>http://blog.unixy.net/2010/09/nginx-drupal-imagecache-apache-proxy_pass-404/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 18:58:53 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Break-Fix]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[apache backend]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[error_page]]></category>
		<category><![CDATA[imagecache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[nginx.conf]]></category>
		<category><![CDATA[reverse proxy]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=565</guid>
		<description><![CDATA[Here is a workaround to the Drupal imagecache issue with Nginx running as a reverse proxy to Apache.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F09%2Fnginx-drupal-imagecache-apache-proxy_pass-404%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F09%2Fnginx-drupal-imagecache-apache-proxy_pass-404%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Here is a <em>workaround</em> to the Drupal imagecache issue with <a title="Nginx High Performance Web Server" href="http://nginx.org" target="_blank">Nginx</a> running as a reverse proxy to <a title="Apache Web Server" href="http://apache.org" target="_blank">Apache</a>. From <a title="Drupal" href="http://drupal.org" target="_blank">Drupal</a>, ImageCache is:</p>
<blockquote><p>ImageCache allows you to setup presets for image processing. If an ImageCache derivative doesn&#8217;t exist the web server&#8217;s rewrite rules will pass the request to Drupal which in turn hands it off to ImageCache to dynamically generate the file.</p></blockquote>
<p>So Nginx shouldn&#8217;t try to serve static files from this directory unless they exist. Otherwise, it will generate a 404 and images will break. With this fix, we are catching the 404 generated by Nginx on static files. We are then forwarding the request to Apache (proxy_pass) so it processes it correctly. We are also caching all 404s for 1 minute to avoid slamming Apache. Be sure to &#8220;fix&#8221; all the other 404 errors so Apache does the least amount work. Most of the time, these 404 errors come from missing favicon.ico or non-manipulated images.</p>
<blockquote>
<div id="_mcePaste">server {</div>
<div id="_mcePaste">access_log off;</div>
<div id="_mcePaste">error_log  logs/vhost-error_log warn;</div>
<div id="_mcePaste">listen    80;</div>
<div id="_mcePaste">server_name  www.unixy.net;</div>
<div id="_mcePaste">location @imagecache {</div>
<div id="_mcePaste">client_max_body_size    10m;</div>
<div id="_mcePaste">client_body_buffer_size 128k;</div>
<div id="_mcePaste">proxy_send_timeout   90;</div>
<div id="_mcePaste">proxy_read_timeout   90;</div>
<div id="_mcePaste">proxy_buffer_size    4k;</div>
<div id="_mcePaste">proxy_buffers     16 32k;</div>
<div id="_mcePaste">proxy_busy_buffers_size 64k;</div>
<div id="_mcePaste">proxy_temp_file_write_size 64k;</div>
<div id="_mcePaste">proxy_connect_timeout 30s;</div>
<div id="_mcePaste">proxy_redirect  http://www.unixy.net:81   http://www.unixy.net;</div>
<div id="_mcePaste">proxy_pass   http://1.1.1.1:81;</div>
<div id="_mcePaste">proxy_set_header   Host   $host;</div>
<div id="_mcePaste">proxy_set_header   X-Real-IP  $remote_addr;</div>
<div id="_mcePaste">proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;</div>
<div id="_mcePaste">}</div>
<p>location ~* \.(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|js|css|mp3|swf|ico|flv)$ {</p>
<p>root   /home/user/public_html;</p>
<p><strong> error_page    404 = @imagecache;</strong></p>
<p>proxy_cache my-cache;</p>
<p>proxy_cache_valid  200 302  10m;</p>
<p><strong> proxy_cache_valid  404  1m;</strong></p>
<p>}</p>
<p>location / {</p>
<p>client_max_body_size    10m;</p>
<p>client_body_buffer_size 128k;</p>
<p>proxy_send_timeout   90;</p>
<p>proxy_read_timeout   90;</p>
<p>proxy_buffer_size    4k;</p>
<p>proxy_buffers     16 32k;</p>
<p>proxy_busy_buffers_size 64k;</p>
<p>proxy_temp_file_write_size 64k;</p>
<p>proxy_connect_timeout 30s;</p>
<p>proxy_redirect  http://www.unixy.net:81   http://www.unixy.net;</p>
<p>proxy_pass   http://1.1.1.1:81/;</p>
<p>proxy_set_header   Host   $host;</p>
<p>proxy_set_header   X-Real-IP  $remote_addr;</p>
<p>proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;</p>
<p>}</p>
<p>}</p></blockquote>
<p>That&#8217;s all folks. We hope this is useful to someone.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2010/09/nginx-drupal-imagecache-apache-proxy_pass-404/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick &amp; dirty Varnish monitoring script</title>
		<link>http://blog.unixy.net/2010/05/dirty-varnish-monitoring-script/</link>
		<comments>http://blog.unixy.net/2010/05/dirty-varnish-monitoring-script/#comments</comments>
		<pubDate>Thu, 27 May 2010 04:56:25 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Break-Fix]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[varnish]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=311</guid>
		<description><![CDATA[Depending on which version of Varnish you have running, there is a chance the code is still experimental and the whole Varnish daemon is prone to a fatal crash. Here is a quick and dirty monitoring script for Varnish. It essentially runs as a crontab job and requests a PING response. Should it not receive [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F05%2Fdirty-varnish-monitoring-script%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F05%2Fdirty-varnish-monitoring-script%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Depending on which version of Varnish you have running, there is a chance the code is still experimental and the whole Varnish daemon is prone to a fatal crash.</p>
<p>Here is a quick and dirty monitoring script for Varnish. It essentially runs as a crontab job and requests a PING response. Should it not receive a PONG from Varnish, it will attempt a restart. There is a second round of testing within the same script. This is a second level of PING request; just in case. Be sure to set the usual defaults like -T port and varnish runlevel script.</p>
<blockquote><p><code>#!/bin/bash</code></p>
<p><code>result=$(echo -e "ping\n\r" | nc localhost 6082|grep PONG|wc -l);</code></p>
<p><code>if [ "${result}" -lt "1" ];<br />
then<br />
/etc/init.d/varnish stop;<br />
sleep 5;<br />
/etc/init.d/varnish start;<br />
echo "$(hostname): Varnish restart" | mail -s "$(hostname): Restarting varnish" alerts@example.com;<br />
fi</code></p>
<p><code>sleep 5;</code></p>
<p><code>results=$(echo -e "ping\n\r" | nc localhost 6082|grep PONG|wc -l);</code></p>
<p><code>if [ "${results}" -lt "1" ];<br />
then<br />
/etc/init.d/varnish stop;<br />
sleep 5;<br />
/etc/init.d/varnish start;<br />
echo "$(hostname): Second Varnish restart" | mail -s "$(hostname): Restarting varnish second time" alerts@example.com;<br />
fi</code></p>
<p><code> </code></p>
<p><code>exit 0;</code></p></blockquote>
<p>Finally load the job into crontab:</p>
<blockquote><p><code>*/5 * * * * /root/varnish.sh</code></p></blockquote>
<p>A cleaner way of accomplishing the same goal would be to establish a permanent connection to the Varnish admin port (6082 in this case) and issue a PING command every other second or so. The interval can be in the sub seconds as opposed to minutes as is the case with crontab.</p>
<p>Here is an example:</p>
<blockquote><p><code># telnet localhost 6082<br />
Trying 127.0.0.1...<br />
Connected to localhost.<br />
Escape character is '^]'.<br />
ping<br />
200 19<br />
PONG 1274931430 1.0<br />
ping<br />
200 19<br />
PONG 1274931434 1.0<br />
ping<br />
200 19<br />
PONG 1274931437 1.0<br />
ping<br />
200 19<br />
PONG 1274931443 1.0</code></p></blockquote>
<p>We deploy Varnish and other tools on our clients&#8217; server to get the most performance out of hardware. Our clients are happy with the performance boost and we are happy of the end result. Please do <a title="UNIXY's Portal" href="https://www.unixy.net/" target="_blank">get in touch</a> if you have any question or comment</p>
<p>That&#8217;s all folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2010/05/dirty-varnish-monitoring-script/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[ERROR] /usr/sbin/mysqld: Out of memory (Needed bytes)</title>
		<link>http://blog.unixy.net/2010/03/error-usrsbinmysqld-out-of-memory-needed-bytes/</link>
		<comments>http://blog.unixy.net/2010/03/error-usrsbinmysqld-out-of-memory-needed-bytes/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 15:00:53 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Break-Fix]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqld]]></category>
		<category><![CDATA[out of memory]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=275</guid>
		<description><![CDATA[Howdy! The above error can come up quite often on a busy database-driven website or it could happen at one time or the other for different reasons. Today, we are going to cover the main two reasons for it happening. I shall break this down by architecture. Linux x86_64 (64-bit) The Out of memory error [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F03%2Ferror-usrsbinmysqld-out-of-memory-needed-bytes%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F03%2Ferror-usrsbinmysqld-out-of-memory-needed-bytes%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Howdy!</p>
<p>The above error can come up quite often on a busy database-driven website or it could happen at one time or the other for different reasons. Today, we are going to cover the main two reasons for it happening. I shall break this down by architecture. </p>
<p><strong>
<li>Linux x86_64 (64-bit)</li>
<p></strong></p>
<p>The <em>Out of memory</em> error indicates that the whole system has run out of memory at that point in time. For example, I happened to be loading a customer&#8217;s database that required more than 4GB of free RAM on the system. The system had 2GB of free RAM to work with so the MySQL process failed to import the database due to a lack of memory. The solution here is to add more memory into the system.</p>
<p><strong>
<li>Linux i386 (32-bit)</li>
<p></strong></p>
<p>Here, the error indicates that either the system ran out of memory, just like in x86_64 above, or that the process cannot address more memory even if it is available. This is more peculiar to the architecture than it is a shortcoming of MySQL. 32-bit operating systems are not capable of letting a process address more than roughly 4GB of memory. The best approach here is to install a 64-bit OS that is capable of addressing that much RAM.</p>
<p>Keep in mind that UNIXy fully manages its customers&#8217; servers. Should this particular problem occur while assisting a customer, we are always more than happy to provide a complimentary memory upgrade to complete the task.</p>
<p>That&#8217;s all folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2010/03/error-usrsbinmysqld-out-of-memory-needed-bytes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improve phpBB Performance &#8211; Quick Win</title>
		<link>http://blog.unixy.net/2010/03/improve-phpbb-performance-quick-win/</link>
		<comments>http://blog.unixy.net/2010/03/improve-phpbb-performance-quick-win/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 05:12:54 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Break-Fix]]></category>
		<category><![CDATA[boardindex]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[phpBB]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[slow]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=266</guid>
		<description><![CDATA[phpBB is a open source forum software. The board&#8217;s index page lists the topics along with a listing of online members. While trouble shooting a customer report of a slower loading of the board &#8220;index&#8221; page, we found out that the fix in itself is simple and easy to implement. We would like to share [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F03%2Fimprove-phpbb-performance-quick-win%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F03%2Fimprove-phpbb-performance-quick-win%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>phpBB is a open source forum software. The board&#8217;s index page lists the topics along with a listing of online members. While trouble shooting a customer report of a slower loading of the board &#8220;index&#8221; page, we found out that the fix in itself is simple and easy to implement. We would like to share this solution in the hope that it will benefit others. It turns out one of the hot spot table, phpbb_users, is not indexed. The performance fix is to simply add an index on column user_email of only 15 characters. Here is an example of the index creation:</p>
<blockquote><p><code>create index phpbb_users_email on phpbb_users (user_email(15));</code></p></blockquote>
<p>That should do it. Enjoy the quick performance bump! Keep in mind that UNIXy is a fully managed shop and is always happy to lend a hand with systems questions. This is part of our fully managed services guarantee that comes with our VPS and dedicated servers.</p>
<p>That&#8217;s all folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2010/03/improve-phpbb-performance-quick-win/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

