I have installed APC, but I am not observing as big an impact on performance as I expected. Actually, I'm not sure I'm observing any benefit, though maybe it's just because the cpu time spent in interpreting php code is negligible compared to the execution of my own code.
So I'm wondering: is it perhaps because I'm running PHP as an apache module (as opposed to fastcgi) and/or because php is using prefork (as opposed to worker)? Does any of these somehow defeat the performance improvement that could be achieved by means of APC?
APC works correctly with
mod_php
in the sense that all Apache processes share the same APC cache. In fact, a FastCGI configuration may be more problematic in this respect (e.g., if usingmod_fcgid
, APC shared cache will not work properly; however, php-fpm should not have such problems).APC may need some tuning to work well; e.g., the default shared memory size (
apc.shm_size=32M
) is probably too small. You can use theapc.php
script distributed with APC to get some performance metrics for your cache — put the script into a web-accessible directory serviced by the same cache instance (withmod_php
this means “any virtual host on the same Apache instance”) and access it from a web browser while some load is present on your actual site. Your cache should not become full on a normal site load (it's OK if the cache becomes full on some rare admin requests, but the PHP code used to reply to requests from normal site users should always fit in the cache to get maximum performance).