<?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>web hosting servers Archives - Chris Gilligan » new media</title>
	<atom:link href="http://chrisgilligan.com/tag/web-hosting-servers/feed/" rel="self" type="application/rss+xml" />
	<link>https://chrisgilligan.com/tag/web-hosting-servers/</link>
	<description>portfolio of web work</description>
	<lastBuildDate>Sat, 03 Apr 2021 14:53:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>
	<item>
		<title>Apache and MySql Performance Tuning for High Traffic WordPress Website on Cpanel</title>
		<link>https://chrisgilligan.com/consulting/web-server-performance-tuning/apache-and-mysql-performance-tuning-for-high-traffic-website/</link>
					<comments>https://chrisgilligan.com/consulting/web-server-performance-tuning/apache-and-mysql-performance-tuning-for-high-traffic-website/#comments</comments>
		
		<dc:creator><![CDATA[Chris Gilligan]]></dc:creator>
		<pubDate>Fri, 26 Aug 2011 14:27:52 +0000</pubDate>
				<category><![CDATA[Web Server Performance Tuning]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache web server]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[blacklisting]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[denial of service]]></category>
		<category><![CDATA[denial of service attacks]]></category>
		<category><![CDATA[inspection firewall]]></category>
		<category><![CDATA[internet climate]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[memory usage]]></category>
		<category><![CDATA[mpm]]></category>
		<category><![CDATA[page impressions]]></category>
		<category><![CDATA[performance testing]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[security probes]]></category>
		<category><![CDATA[soccer news]]></category>
		<category><![CDATA[Syndication]]></category>
		<category><![CDATA[traffic load]]></category>
		<category><![CDATA[traffic security]]></category>
		<category><![CDATA[traffic surges]]></category>
		<category><![CDATA[web hosting servers]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://chrisgilligan.com/?p=523</guid>

					<description><![CDATA[<p>SoccerNews.com is a high traffic WordPress site with over 600,000 unique visitors and over 2,000,000 page impressions per month. It is a content republisher and aggregator, presenting custom XML feeds for (what else?) soccer news from all over the world. The site has a very active user base, providing content in the forms of editorials and [&#8230;]</p>
<p>The post <a href="https://chrisgilligan.com/consulting/web-server-performance-tuning/apache-and-mysql-performance-tuning-for-high-traffic-website/">Apache and MySql Performance Tuning for High Traffic WordPress Website on Cpanel</a> appeared first on <a href="https://chrisgilligan.com">Chris Gilligan » new media</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="float: right; margin: 0 0 10px 15px; width:240px; height: auto;">
		<img src="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-9.01.12-AM.png?x25141" width="240" style="max-width: 100%; height: auto;" />
		</p><p><strong><a title="Soccer News" href="http://soccernews.com/">SoccerNews.com</a> is a high traffic WordPress site with over 600,000 unique visitors and over 2,000,000 page impressions per month.</strong> It is a content republisher and aggregator, presenting custom XML feeds for (what else?) soccer news from all over the world. The site has a very active user base, providing content in the forms of editorials and comments on news items. Advertising and sponsored referrals provide the revenue stream.</p>
<div id="attachment_524" style="width: 269px" class="wp-caption aligncenter"><a href="http://soccernews.com/"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-524" class="size-medium wp-image-524 " title="SoccerNews.com website" src="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-9.01.12-AM-259x300.png?x25141" alt="SoccerNews.com website" width="259" height="300" srcset="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-9.01.12-AM-259x300.png?x25141 259w, https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-9.01.12-AM.png?x25141 821w" sizes="(max-width: 259px) 100vw, 259px" /></a><p id="caption-attachment-524" class="wp-caption-text">SoccerNews.com website</p></div>
<p><strong>I was contacted by the publisher</strong> after responding to a plea for assistance in a WordPress.org support forum. Though the site was running on a dedicated server with 8GB RAM, it was crashing frequently under load. The developer tried implementing APC Alternative PHP Cache and W3 Total Cache, but these measures turned out to be incompatible with some of the custom PHP code and the software architecture of the Cpanel server. Haphazardly implementing randomly suggested &#8220;solutions&#8221; had actually made the problems worse, resulting in an &#8220;own goal&#8221; that brought down the server.</p>
<p><strong>I did an assessment of the software, hardware and traffic load</strong> and found that there were many improvements to be made. Among the changes:</p>
<ul>
<li><strong>Implemented a <a href="http://configserver.com/cp/csf.html">Stateful Packet Inspection firewall and Login Failure Daemon</a> </strong>to block malicious IP addresses, malware servers, bad bots, content scrapers, etc. Many of the problems leading to site crashes were due to constant bad bot traffic, security probes and Denial of Service attacks. Connection Tracking in the firewall now limits the amount of resources a single legitimate IP address can monopolize, in addition to blacklisting attackers.
<ul>
<li>This is the first step to proper web server performance in today&#8217;s Internet climate. Popular sites that do not have a solid security and load balancing strategy are subject to crippling traffic from the Internet&#8217;s millions of malicious and compromised servers and personal computers.</li>
</ul>
</li>
<li><strong><a title="Tuning Apache and MySQL for Best Performance in a Shared Virtual Hosting Environment" href="https://chrisgilligan.com/wordpress/tuning-apache-and-mysql-for-best-performance-in-a-shared-virtual-hosting-environment/">Reconfigured Apache web server, PHP and MySQL</a></strong> to better utilize the server&#8217;s horsepower. Cpanel&#8217;s efault Apache and MySQL configurations were limiting the number of concurrent user sessions the server could handle. Changed PHP to run as FastCGI (fcgid) and recompiled Apache to better handle the needs of a high traffic WordPress site. Configured a large MySQL table and query cache based on performance and load testing.</li>
<li><strong>Configured Amazon CloudFront Content Distribution Network</strong>, page cache, browser cache, and object cache with the WordPress plugin, <a title="W3 Edge -- W3 Total Cache" href="http://www.w3-edge.com/wordpress-plugins/w3-total-cache/">W3 Total Cache</a>. Due to the sheer number of ad scripts being served per page, there were inevitable JavaScript and PHP conflicts, but W3TC is very flexible and was able to handle the task.</li>
<li><strong>Suggested a scheduled, offsite backup strategy</strong> that would utilize existing resources, and eliminate the need for a 3rd-party backup solution that was causing more load issues and costing $45.00 per month.</li>
</ul>
<div><strong>Now the site is stable and fast</strong>, and is ready for very high traffic. With World Cup Brazil coming up in 2014, the site will definitely see a huge amount of users. Future plans include changing the architecture of the server to simplify the background processes and implement APC Alternative PHP Cache, or a caching web server front end.</div>
<h3>Results? I&#8217;ll let the publisher speak to that!</h3>
<blockquote><p><strong>The site has been as good as &#8220;flawless&#8221; since, with no downtime, and we couldn&#8217;t be happier. Everything is running smoothly and it&#8217;s a great relief knowing that we made the site faster, safer and more reliable. The site feels a lot more stable and faster. So you&#8217;ve done a great job. </strong></p>
<p>&#8212; Kim Vincenzius, <a title="StarScape, LLC" href="http://www.starscape.com/">StarScape LLC</a></p></blockquote>
<p>The post <a href="https://chrisgilligan.com/consulting/web-server-performance-tuning/apache-and-mysql-performance-tuning-for-high-traffic-website/">Apache and MySql Performance Tuning for High Traffic WordPress Website on Cpanel</a> appeared first on <a href="https://chrisgilligan.com">Chris Gilligan » new media</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chrisgilligan.com/consulting/web-server-performance-tuning/apache-and-mysql-performance-tuning-for-high-traffic-website/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>APC Cache Considerations for Virtual Hosting Environments</title>
		<link>https://chrisgilligan.com/consulting/apc-cache-considerations-for-virtual-hosting-environments/</link>
					<comments>https://chrisgilligan.com/consulting/apc-cache-considerations-for-virtual-hosting-environments/#comments</comments>
		
		<dc:creator><![CDATA[Chris Gilligan]]></dc:creator>
		<pubDate>Mon, 22 Aug 2011 14:58:21 +0000</pubDate>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Virtualmin]]></category>
		<category><![CDATA[Web Server Performance Tuning]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[commodity]]></category>
		<category><![CDATA[configured]]></category>
		<category><![CDATA[conflicts]]></category>
		<category><![CDATA[cpu requirements]]></category>
		<category><![CDATA[environments]]></category>
		<category><![CDATA[hosting server]]></category>
		<category><![CDATA[ini]]></category>
		<category><![CDATA[neighborhood]]></category>
		<category><![CDATA[personal clients]]></category>
		<category><![CDATA[php script]]></category>
		<category><![CDATA[script packages]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[virtual host]]></category>
		<category><![CDATA[virtual hosts]]></category>
		<category><![CDATA[virtual server]]></category>
		<category><![CDATA[virtualmin]]></category>
		<category><![CDATA[web hosting servers]]></category>
		<guid isPermaLink="false">https://chrisgilligan.com/?p=505</guid>

					<description><![CDATA[<p>APC cache does not work well in a virtual hosting environment unless PHP is running as FCGID, and every individual virtual host has a unique PHP.ini and a unique fcgiwrapper. This is not the case with many virtual hosting environments because the memory and CPU requirements are too great. I suggest using Virtualmin for a [&#8230;]</p>
<p>The post <a href="https://chrisgilligan.com/consulting/apc-cache-considerations-for-virtual-hosting-environments/">APC Cache Considerations for Virtual Hosting Environments</a> appeared first on <a href="https://chrisgilligan.com">Chris Gilligan » new media</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="float: right; margin: 0 0 10px 15px; width:240px; height: auto;">
		<img src="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2010/10/Screen-shot-2010-10-13-at-6.20.12-PM.png?x25141" width="240" style="max-width: 100%; height: auto;" />
		</p><p>APC cache does not work well in a virtual hosting environment unless PHP is running as FCGID, and every individual virtual host has a unique PHP.ini and a unique fcgiwrapper. This is not the case with many virtual hosting environments because the memory and CPU requirements are too great.</p>
<p><a title="How to Configure APC Cache on Virtual Servers with PHP running under FCGId" href="https://chrisgilligan.com/wordpress/how-to-configure-apc-cache-on-virtual-servers-with-php-running-under-fcgid/">I suggest using Virtualmin for a shared hosting environment with APC cache</a>, because it does allow to set php.ini and fcgiwrapper for every individual virtual host, and so to set an individual configuration for APC per virtual server. However with 200+ virtual hosts all running PHP script packages, as is the case with a commodity shared hosting server, this will use a lot of memory, and you will need somewhere in the neighborhood of 10-30GB apc.shm_size if you attempt to configure a single APC cache for the entire server.</p>
<p>My web hosting server is for a small number of personal clients, so I adjust the APC settings for each individual account, depending on the number and type of PHP script packages running on the account. These accounts are all administered by myself, not by the clients.</p>
<p>I do not think APC is the correct cache for most shared web hosting servers, given the number of virtual hosts. You will probably have better results if you remove APC and concentrate on <a title="Tuning Apache and MySQL for Best Performance in a Shared Virtual Hosting Environment" href="https://chrisgilligan.com/portfolio/tuning-apache-and-mysql-for-best-performance-in-a-shared-virtual-hosting-environment/">Apache performance tuning and MySQL cache</a>.</p>
<p>If your clients are adamant in their requests to use APC cache, you may wish to move them to a different server which can properly handle their needs. Virtualmin is a very good choice for this, as it allows individual accounts to be configured with individual php.ini and fcgiwrapper, or even different versions of PHP. Of course, because this will require greater management, it should be charged as a premium service.</p>
<p>If you wish to enable APC on a commodity web hosting server, you may try the following method to selectively enable APC per directory:<br />
<a href="http://www.php.net/manual/en/ini.php">http://www.php.net/manual/en/ini.php</a></p>
<p><em>Also see other recommendations in following comments&#8230; </em></p>
<p>&nbsp;</p>
<p>The post <a href="https://chrisgilligan.com/consulting/apc-cache-considerations-for-virtual-hosting-environments/">APC Cache Considerations for Virtual Hosting Environments</a> appeared first on <a href="https://chrisgilligan.com">Chris Gilligan » new media</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chrisgilligan.com/consulting/apc-cache-considerations-for-virtual-hosting-environments/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>How to Configure APC Cache on Virtual Servers with PHP running under FCGId</title>
		<link>https://chrisgilligan.com/wordpress/how-to-configure-apc-cache-on-virtual-servers-with-php-running-under-fcgid/</link>
					<comments>https://chrisgilligan.com/wordpress/how-to-configure-apc-cache-on-virtual-servers-with-php-running-under-fcgid/#comments</comments>
		
		<dc:creator><![CDATA[Chris Gilligan]]></dc:creator>
		<pubDate>Tue, 09 Nov 2010 01:33:31 +0000</pubDate>
				<category><![CDATA[Virtualmin]]></category>
		<category><![CDATA[Web Server Performance Tuning]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[apc cache]]></category>
		<category><![CDATA[apc fcgid]]></category>
		<category><![CDATA[commodity web]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[hosts section]]></category>
		<category><![CDATA[ini]]></category>
		<category><![CDATA[installation suggestions]]></category>
		<category><![CDATA[memory limit]]></category>
		<category><![CDATA[mpm]]></category>
		<category><![CDATA[page cache]]></category>
		<category><![CDATA[performance testing]]></category>
		<category><![CDATA[php module]]></category>
		<category><![CDATA[php.ini apc settings]]></category>
		<category><![CDATA[server performance]]></category>
		<category><![CDATA[system resources]]></category>
		<category><![CDATA[traffic surges]]></category>
		<category><![CDATA[virtual domains]]></category>
		<category><![CDATA[virtual hosts]]></category>
		<category><![CDATA[virtual private server]]></category>
		<category><![CDATA[virtual servers]]></category>
		<category><![CDATA[virtualmin]]></category>
		<category><![CDATA[web hosting servers]]></category>
		<guid isPermaLink="false">https://chrisgilligan.com/?p=274</guid>

					<description><![CDATA[<p>My Virtualmin Amazon Linux Server runs several virtual domains with PHP under FCGId using APC for opcode caching: Joomla, PHPbb, WordPress, etc . APC is somewhat challenging to configure properly with fcgid-enabled virtual domains, but it is quite helpful to optimize system resources and prevent traffic surges on one site from affecting overall server performance. Joomla [&#8230;]</p>
<p>The post <a href="https://chrisgilligan.com/wordpress/how-to-configure-apc-cache-on-virtual-servers-with-php-running-under-fcgid/">How to Configure APC Cache on Virtual Servers with PHP running under FCGId</a> appeared first on <a href="https://chrisgilligan.com">Chris Gilligan » new media</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="float: right; margin: 0 0 10px 15px; width:240px; height: auto;">
		<img src="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2010/10/Screen-shot-2010-10-13-at-6.20.12-PM.png?x25141" width="240" style="max-width: 100%; height: auto;" />
		</p><div id="attachment_306" style="width: 301px" class="wp-caption alignright"><a href="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2010/10/Screen-shot-2010-10-13-at-6.20.12-PM.png?x25141"><img decoding="async" aria-describedby="caption-attachment-306" class="size-medium wp-image-306" title="APC INFO" src="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2010/10/Screen-shot-2010-10-13-at-6.20.12-PM-291x300.png?x25141" alt="APC INFO Monitor" width="291" height="300" srcset="https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2010/10/Screen-shot-2010-10-13-at-6.20.12-PM-291x300.png?x25141 291w, https://d2lehxir4n36oh.cloudfront.net/wp-content/uploads/2010/10/Screen-shot-2010-10-13-at-6.20.12-PM.png?x25141 592w" sizes="(max-width: 291px) 100vw, 291px" /></a><p id="caption-attachment-306" class="wp-caption-text">APC INFO Monitor</p></div>
<p><strong>My Virtualmin Amazon Linux</strong> Server runs several virtual domains with <strong>PHP under FCGId</strong> using <strong>APC for opcode caching</strong>: Joomla, PHPbb, WordPress, etc . APC is somewhat challenging to configure properly with fcgid-enabled virtual domains, but it is quite helpful to optimize system resources and prevent traffic surges on one site from affecting overall server performance. Joomla and PHPbb have code that is pre-optimized with hooks for APC, but WordPress requires a plugin called <strong>W3 Total Cache</strong>.</p>
<h3>First Things First</h3>
<p>Please read my posts about <a title="APC Cache Considerations for Virtual Hosting Environments" href="https://chrisgilligan.com/wordpress/apc-cache-considerations-for-virtual-hosting-environments/">APC on commodity virtual hosting servers</a> and <a title="Tuning Apache and MySQL for Best Performance in a Shared Virtual Hosting Environment" href="https://chrisgilligan.com/portfolio/tuning-apache-and-mysql-for-best-performance-in-a-shared-virtual-hosting-environment/">Apache and MySQL performance tuning</a> before you begin.</p>
<p>If you are running your virtual servers under FCGId, then you should do so for all virtual servers on your machine. Why? Because then you do not need apache&#8217;s mod_php (php module). Less modules loaded, less wasted memory.</p>
<ul>
<li>Comment out:<code><br />
LoadModule php5_module modules/libphp5.so</code><br />
in /etc/httpd/conf.d/php.conf</li>
<li>Remove any php_memory_limit lines in httpd.conf&#8217;s virtual hosts section.<code></code></li>
<li>restart apache<br />
<code></code></li>
<li>do some performance testing and raise your server and thread limits to sane levels in httpd.conf</li>
</ul>
<p>If possible, you may wish to run Apache with Worker MPM instead of Prefork MPM.</p>
<ul>
<li>More information about <a title="Apache config for Worker MPM vs Prefork MPM" href="https://chrisgilligan.com/wordpress/apache-config-for-worker-mpm-vs-prefork-mpm/">Apache Worker MPM vs. Prefork MPM »</a></li>
</ul>
<p>Installation Suggestions and Modification of Defaults</p>
<p>Be sure to install the newest version of APC, 3.1.9 as of the last revision of this post (I assume you know how to install and configure all the packages mentioned in this post):</p>
<p><code>pecl install apc</code></p>
<p>Choose &#8220;no&#8221; for internal debugging,  but choose &#8220;yes&#8221; for the other installation options, including the Experimental options.</p>
<p><strong>For W3 Total Cache (WordPress plugin):</strong><br />
Page Cache: do not choose APC for the W3TC&#8217;s Page Cache, choose Enhanced Disk.<br />
Minify: do not choose APC for Minify, use Disk.<br />
Opcode Cache: choose APC for Opcode Cache<br />
Database Cache: choose APC for Opcode Cache<em><br />
</em></p>
<p><strong>For APC running on virtual servers for opcode caching:</strong><br />
<em> Remove</em> apc.ini from /etc/php.d. Do not add the APC configuration into /etc/php.ini (main php.ini which is probably a template used for creation of new virtual servers).</p>
<p>Instead, enable APC on a per-domain basis by modifying the respective /home/domainname.com/etc/php5/php.ini &#8212; your httpd.conf or virtual.conf should look something like this for each virtual domain.</p>
<pre class="lang:default decode:true">&lt;VirtualHost 99.88.177.288:80&gt;
ServerName chrisgilligan.com
ServerAlias www.chrisgilligan.com
DocumentRoot /home/chris/public_html
ErrorLog /var/log/serversoftware/chrisgilligan.com_error_log
CustomLog /var/log/serversoftware/chrisgilligan.com_access_log combined
ScriptAlias /cgi-bin/ /home/chris/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
&lt;Directory /home/chris/public_html&gt;
Options Indexes IncludesNOEXEC FollowSymLinks ExecCGI
allow from all
AllowOverride All
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/chris/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/chris/fcgi-bin/php5.fcgi .php5
&lt;/Directory&gt;
&lt;Directory /home/chris/cgi-bin&gt;
allow from all
&lt;/Directory&gt;
SuexecUserGroup "#987" "#756"
Options ExecCGI FollowSymLinks Includes IncludesNOEXEC -Indexes MultiViews SymLinksIfOwnerMatch
RemoveHandler .php
RemoveHandler .php5
IPCCommTimeout 12
&lt;/VirtualHost&gt;</pre>
<p>You must &#8220;babysit&#8221; the configuration: use the APC monitor (apc.php) to see how many files are being cached, and how much memory (apc.shm_size) is needed to avoid fragmentation, which will cause the 500 errors. If fragmentation rises quickly to 100%, memory usage is full, and cache full count rises above 0, you will almost surely see &#8220;500&#8221; errors.</p>
<p>If WordPress is the only PHP script software package on the domain, the following configuration will likely work for you; if you have more PHP software packages, you will need to raise apc.shm_size and raise the apc.user_entries_hint and apc.user_entries_hint settings, and possibly lower TTL values to allow cached files to expire and be replaced.</p>
<p>In general, you must <em>double</em> apc.shm_size in relation to APC&#8217;s highest reported Memory Usage to avoid fragmentation completely.</p>
<h3>Configuration Suggestion for php.ini</h3>
<p>in the virtual server&#8217;s /home/domainname.com/etc/php5/php.ini, add the following configuration:<br />
(you may also install memcached, and should install fileinfo for full use of W3 Total Cache)</p>
<pre class="lang:default decode:true ">[memcached]
;memcached for distributed servers - e.g. mysql server on separate host
;extension=memcache.so

[fileinfo]
;fileinfo is included in PHP 5.3=&gt;... uncomment the following line if using &lt;=5.2
;extension=fileinfo.so

[APC]
extension = apc.so
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 12M
apc.optimization = 0
apc.num_files_hint = 512
apc.user_entries_hint = 1024
apc.ttl = 0
apc.user_ttl = 0
apc.gc_ttl = 600
apc.cache_by_default = 0
apc.filters = "-/home/username/public_html/apc/apc\.php$"
apc.slam_defense = 0
apc.use_request_time = 1
apc.mmap_file_mask = /tmp/apc-accountname.XXXXXX
;OR apc.mmap_file_mask = /dev/zero
apc.file_update_protection = 2
apc.enable_cli = 0
apc.max_file_size = 2M
apc.stat = 1
apc.write_lock = 1
apc.report_autofilter = 0
apc.include_once_override = 0
apc.rfc1867 = 0
apc.rfc1867_prefix = "upload_"
apc.rfc1867_name = "APC_UPLOAD_PROGRESS"
apc.rfc1867_freq = 0
apc.localcache = 1
apc.localcache.size = 512
apc.coredump_unmap = 0
apc.stat_ctime = 0</pre>
<p>Save php.ini, restart apache and then watch the APC Monitor to ensure fragmentation stays below 50% (it should remain less than 10% most of the time&#8230; if fragmentation rises quickly, you should add a few more MB&#8217;s of memory to apc.shm_size and restart apache).</p>
<h3>Monitoring APC Performance and Detecting Errors</h3>
<p>You should run apc.php in a password-protected directory in the domain&#8217;s public_html. Edit the apc.php code to allow passwordless access.<br />
<code>defaults('USE_AUTHENTICATION',0);</code></p>
<p>You can monitor errors with these commands:<br />
<code>tail -f -n 50 /var/log/httpd/error_log<br />
tail -f -n 50 /home/domainname.com/logs/error_log</code></p>
<p>In the logs, you should see messages like the following:<br />
<code>mod_fcgid: process /home/username/public_html/scriptname.php(21272) exit(lifetime expired), terminated by calling exit(), return code: 0</code><br />
<code>... exit(server exited) ...</code><br />
<code>... exit(idle timeout) ...</code><br />
if the cache is working well. If you see <code>exit(communication error)</code> then you have issues, probably cache full and fragmented.</p>
<h3>Fragmentation Explained</h3>
<p>Fragmentation is a measure of the non-available portion of apc.shm_size due to lack of contiguous memory large enough to accept new cache items. 100% fragmentation means the available memory is broken into hundreds of small pieces that are too small to accept new cache items. This occurs when cached items expire and new cached items fill their vacated memory slots; usually the new item is slightly smaller than the old item, and the leftover space may be too small for a new cache item.</p>
<p>Fragmentation can cause even a large amount of free memory to be unavailable for new cache items. That is why I say above you can avoid fragmentation by doubling the apc.shm_size in relation to the largest total memory usage you see. So you may want to start with 100MB, let the site run for a few hours during high traffic conditions, and then reduce shm_size to roughly double the highest amount of cache memory usage during that time.</p>
<h3>Further Information and Suggestions</h3>
<p>APC can have a very significant effect on minimizing overall server load and overall memory usage. It takes time to configure, and must be re-configured whenever PHP script software is added to a virtual server. The more plugins/mods/components you add to a PHP software package, the more scripts, database queries and objects will be cached.</p>
<p>If you have PHP scripts or plugins that do not need to be cached (low traffic pages such as contact forms, PHP scripts that do not have APC hooks and have their own caching schemes, dynamic image resizers, etc.), you can filter them out with simple RegEx:<br />
<code>apc.filters = "-/home/username/public_html/apc\.php$,-/home/username/public_html/wordpress/wp-content/themes/themename/thumb\.php$,-/usr/share/psa-horde/.*,+/home/username/public_html/phpmyadmin/.*"</code></p>
<p>TimThumb is a good example of a common WordPress theme plugin that may not need to be cached.</p>
<p>Because the apc.filters RegExp only works with filenames, it is not possible to filter out an entire PHP script package, component or plugin based on the directory where it resides. So if you do not wish to use APC cache on a particular script package, you should run it in a separate website. Some PHP script packages such as Gallery2 have an incredibly large number of .php, .inc and .class files which will be cached, so it is difficult to find them all and filter them all using apc.filters.</p>
<p>If you can&#8217;t raise apc.shm_size due to lack of available memory, try lowering the TTL&#8217;s (values in seconds, 0 is no limit, 600=10minutes, etc.). This will still have a good effect on high-traffic sites with many concurrent end users; caching is not at all necessary for low-traffic sites. However, be aware that lower TTL&#8217;s can cause more fragmentation.</p>
<h3>During Testing or Debugging with CMS caching plugins or modules</h3>
<p>While you are tweaking your opcode settings, and especially if you are using APC with a CMS like WordPress (w3 total cache) or phpbb or joomla, and you are experimenting with settings, or updating plugins or core, you should set apc.stat=1 (on). Restart the web server to load the new settings.</p>
<p>APC.Stat is the file change polling, which checks for file change every time a cached script or object is called. So, with polling turned off, your settings/configuration files will remain cached, and this will cause you a lot of frustration. W3 Total Cache in particular is difficult to get configured properly with apc.stat=0 because the config settings and files are dependent upon database and php, which will be cached as files or opcode.</p>
<p>After you have sorted out your opcode settings, you may switch apc.stat=0 and restart the web server to turn off polling for better performance.</p>
<p>If you cannot get APC to configured correctly for your WordPress sites, I suggest WP Super Cache and WP Minify&#8230; that combination will probably have a better effect, as it will serve pages very quickly and accellerate user experience for a small number of users. Joomla 1.5 and phpBB3 are much easier to work with, as their caching systems are built to use APC and other opcode caches. Apparently, Gallery3 now also supports opcode caching.</p>
<p><strong>More advice: </strong></p>
<ul>
<li>turn <strong><em>on</em></strong> apc.stat (documentation says, &#8220;not for production servers&#8221;, but W3TC requires stat polling to monitor file status, post revisions, plugin upgrades, etc.)</li>
<li>turn <strong><em>off</em></strong> apc.optimization (experimental and unstable, may cache user session info, fubaring items which should not be cached, such as admin pages and logged-in site pages)</li>
<li>turn <strong><em>off</em></strong> apc.include_once_override (use carefully; only useful with PHP scripts that do not have cache hooks, such as Joomla 1.0, phpBB2, etc.)</li>
<li>turn <em><strong>off</strong></em> apc.slam_defense (may cause objects to be replaced with PHP warnings which are displayed to the user, especially on Joomla 1.5)</li>
<li>set apc.user_ttl = 0 (allows your php scripts to set appropriate timeouts for queries and objects)</li>
<li>set apc.mmap_file_mask = /tmp/apc-yourusernamehere.XXXXXX for file-backed mmap; make file mask unique by adding your unique string; XXXXXX (exactly 6 X&#8217;s) must remain to allow APC to add random string<br />
OR set to /dev/zero for anonymous mmap if you can spare the memory</li>
</ul>
<p><small>APC Manual: <a href="http://www.php.net/manual/en/book.apc.php">http://www.php.net/manual/en/book.apc.php</a><br />
APC Runtime Configuration <a href="http://www.php.net/manual/en/apc.configuration.php">http://www.php.net/manual/en/apc.configuration.php</a></small></p>
<p>The post <a href="https://chrisgilligan.com/wordpress/how-to-configure-apc-cache-on-virtual-servers-with-php-running-under-fcgid/">How to Configure APC Cache on Virtual Servers with PHP running under FCGId</a> appeared first on <a href="https://chrisgilligan.com">Chris Gilligan » new media</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chrisgilligan.com/wordpress/how-to-configure-apc-cache-on-virtual-servers-with-php-running-under-fcgid/feed/</wfw:commentRss>
			<slash:comments>57</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Page Caching using Disk: Enhanced 
Content Delivery Network via Amazon Web Services: CloudFront: d2lehxir4n36oh.cloudfront.net
Lazy Loading (feed)

Served from: chrisgilligan.com @ 2026-08-27 04:34:32 by W3 Total Cache
-->