Cache Pages with APC / Mysql

Marcus

Well-known member
Usually when I first read a page at one browser (let's say Firefox) it is around 0.3 seconds for the page load. When accessing the page another time, the page load time is reduced to 0.04 seconds. I can also view the page as a guest on another browser like IE or Chrome and it will be loaded in 0.04 seconds.

How is that possible? Is that because of APC? And why are all pages slow in the first attempt to load it - because other users also access the pages. And a once accessed page should stay in the APC cache. This is my APC cache statistics:

apc.webp
 
If the compiled script was not previously in the APC cache then yes, that could explain the numbers you are seeing.
 
Can you post your full APC settings? You are also on a fairly old version of APC. Latest is 3.1.13
 
Thats my apc.php
Code:
; Enable apc extension module
extension = apc.so
 
; Options for the APC module version >= 3.1.3
 
; This can be set to 0 to disable APC.
apc.enabled=1
; The number of shared memory segments to allocate for the compiler cache.
apc.shm_segments=1
; The size of each shared memory segment in MB.
apc.shm_size=2048
; A "hint" about the number of distinct source files that will be included or
; requested on your web server. Set to zero or omit if you're not sure;
apc.num_files_hint=1024
; Just like num_files_hint, a "hint" about the number of distinct user cache
; variables to store. Set to zero or omit if you're not sure;
apc.user_entries_hint=4096
; The number of seconds a cache entry is allowed to idle in a slot in case this
; cache entry slot is needed by another entry.
apc.ttl=7200
; use the SAPI request start time for TTL
apc.use_request_time=1
; The number of seconds a user cache entry is allowed to idle in a slot in case
; this cache entry slot is needed by another entry.
apc.user_ttl=7200
; The number of seconds that a cache entry may remain on the garbage-collection list.
apc.gc_ttl=3600
; On by default, but can be set to off and used in conjunction with positive
; apc.filters so that files are only cached if matched by a positive filter.
apc.cache_by_default=1
; A comma-separated list of POSIX extended regular expressions.
apc.filters
; The mktemp-style file_mask to pass to the mmap module
apc.mmap_file_mask=/tmp/apc.XXXXXX
; This file_update_protection setting puts a delay on caching brand new files.
apc.file_update_protection=2
; Setting this enables APC for the CLI version of PHP (Mostly for testing and debugging).
apc.enable_cli=0
; Prevents large files from being cached
apc.max_file_size=5M
; Whether to stat the main script file and the fullpath includes.
apc.stat=1
; Vertification with ctime will avoid problems caused by programs such as svn or rsync by making
; sure inodes havn't changed since the last stat. APC will normally only check mtime.
apc.stat_ctime=0
; Whether to canonicalize paths in stat=0 mode or fall back to stat behaviour
apc.canonicalize=0
; With write_lock enabled, only one process at a time will try to compile an
; uncached script while the other processes will run uncached
apc.write_lock=1
; Logs any scripts that were automatically excluded from being cached due to early/late binding issues.
apc.report_autofilter=0
; RFC1867 File Upload Progress hook handler
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
; Optimize include_once and require_once calls and avoid the expensive system calls used.
apc.include_once_override=0
apc.lazy_classes=00
apc.lazy_functions=0
; not documented
apc.coredump_unmap=0
apc.file_md5=0
apc.preload_path
 
If you don't change the files much, you could set
apc.stat=1
to
apc.stat=0

I also set:
apc.mmap_file_mask=/tmp/apc.XXXXXX

to be
apc.mmap_file_mask=/apc.shm.XXXXXX

as this stores the files in shared memory, and not on the disk.
 
If you don't change the files much, you could set
apc.stat=1
to
apc.stat=0

If you do this then be aware that if you use the option "Fetch public templates as files", then template changes to cached templates will NOT take effect, including templates changed by the TMS.
 
If you do this then be aware that if you use the option "Fetch public templates as files", then template changes to cached templates will NOT take effect, including templates changed by the TMS.
Correct. That is why I said "if you don't change the files much". If you had that set, you can flush the APC cache when you make any changes and the new files will be cached again.

Apologies if that wasn't very clear in my previous post.
 
Correct. That is why I said "if you don't change the files much". If you had that set, you can flush the APC cache when you make any changes and the new files will be cached again.

Apologies if that wasn't very clear in my previous post.

I just didn't think of a template change done via the TMS as a file change. And it's not really, unless you have "Fetch public templates as files" set then it's a database change.
 
Top Bottom