[solved] Rapid APC Caching Causes Fragmentation

semprot

Well-Known Member
#1
I have a feature on my website to cache visitor guests on each page.

If i enabled that feature - which means apc stores lot of things (page) rapidly, because i have lot of visitors, fragmentation increases overtime, and i have to restart httpd sometimes.

If i disable that feature, everything is fine.

Here is my APC setting
Code:
apc.cache_by_default	1
apc.canonicalize	1
apc.coredump_unmap	0
apc.enable_cli	1
apc.enabled	1
apc.file_md5	0
apc.file_update_protection	2
apc.filters	
apc.gc_ttl	3600
apc.include_once_override	0
apc.lazy_classes	0
apc.lazy_functions	0
apc.max_file_size	20M
apc.mmap_file_mask	/home/apc/apc.m8wvpV
apc.num_files_hint	1000
apc.preload_path	
apc.report_autofilter	0
apc.rfc1867	0
apc.rfc1867_freq	0
apc.rfc1867_name	APC_UPLOAD_PROGRESS
apc.rfc1867_prefix	upload_
apc.rfc1867_ttl	3600
apc.serializer	default
apc.shm_segments	1
apc.shm_size	6144M
apc.slam_defense	1
apc.stat	0
apc.stat_ctime	0
apc.ttl	0
apc.use_request_time	1
apc.user_entries_hint	16384
apc.user_ttl	7200
apc.write_lock	1
Here is some of my lsws setting
Code:
PHP_LSAPI_MAX_REQUESTS=2500
PHP_LSAPI_CHILDREN=35
LSAPI_AVOID_FORK=1
I think the saved visitor cache is a kind of "full generated-html code", so for example the cache "size" for each page could reach +- 100kb.
Does that mean i should increase apc.user_entries_hint to more than 100kb?
 
Last edited by a moderator:

NiteWave

Administrator
#4
so if i want to cache variable that has X kb in size, user_entries_hint must be exactly minimal X kb in size to avoid defragmentation?
no, it's not much related. do you know how many variables will be cached ?
say there are 100 variables, then set user_entries_hint a bit larger than 100, e.g., 120 will avoid fragmentation.
 

semprot

Well-Known Member
#5
no, it's not much related. do you know how many variables will be cached ?
say there are 100 variables, then set user_entries_hint a bit larger than 100, e.g., 120 will avoid fragmentation.
Sorry i still don't understand.

If i want to cache 3 variables at same script execution :
PHP:
$one = '1234567890';// 10 characters
$two = '123456789012345';// 15 characters
$three = '12345678901234567890';// 20 characters
user_entries_hint should be larger than which one?
  • > 3 (number of variables)
  • > 45 (10 characters + 15 characters + 20 characters)
  • > 20 (max characters on all variables)
 
Top