LiteSpeed Support Forums

LiteSpeed Support Forums (http://www.litespeedtech.com/support/forum/index.php)
-   PHP (http://www.litespeedtech.com/support/forum/forumdisplay.php?f=19)
-   -   [solved] High APC Fragmentation but Low Usage (http://www.litespeedtech.com/support/forum/showthread.php?t=6436)

semprot 12-09-2012 08:55 PM

[solved] High APC Fragmentation but Low Usage
 
1 Attachment(s)
I have a strange problem, APC fragmentation seems increasing through time, although usage is low.

Apc stats image is attached below.

http://www.litespeedtech.com/support...6&d=1355115130

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        /tmp/apc.BHafv6
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        3048M
apc.slam_defense        1
apc.stat        0
apc.stat_ctime        0
apc.ttl        0
apc.use_request_time        1
apc.user_entries_hint        4096
apc.user_ttl        7200
apc.write_lock        1

Any clue what should i change?

NiteWave 12-10-2012 04:06 AM

I guess it may due to variable cache. if php script use apc_delete(), then it may cause fragment illustrated in the screenshot. to experiment, you can temporarily disable variable cache to watch the fragment status.

semprot 12-10-2012 08:11 AM

1 Attachment(s)
Quote:

Originally Posted by NiteWave (Post 38739)
I guess it may due to variable cache. if php script use apc_delete(), then it may cause fragment illustrated in the screenshot. to experiment, you can temporarily disable variable cache to watch the fragment status.

How to temporarily disable variable cache?

However since first post, i've doubled shm size (6gb now), and fragmentation is still ugly.

http://www.litespeedtech.com/support...9&d=1355155837

NiteWave 12-10-2012 06:19 PM

did some search, have not found a simple way to disable user variable cache.

for fragment, it's more relating to add/delete cache entry frequently.
since you set
apc.ttl 0
apc.user_ttl 7200
which add operation can be 0 if shared memory always have free space(in your case). but if php script use apc_delete() to delete cache entry purposely, it will cause fragment.

semprot 12-10-2012 07:39 PM

Quote:

Originally Posted by NiteWave (Post 38807)
did some search, have not found a simple way to disable user variable cache.

for fragment, it's more relating to add/delete cache entry frequently.
since you set
apc.ttl 0
apc.user_ttl 7200
which add operation can be 0 if shared memory always have free space(in your case). but if php script use apc_delete() to delete cache entry purposely, it will cause fragment.

My site has guests & logged in visitors. For guests, the view is cached entirely by APC (i think) to speedup site. Considering the amount of guests and cached pages, i agree maybe add operation is frequent. But apc_delete is not used frequently on my site i believe, because i set the script to cache on long time (5 hours). :confused:

NiteWave 12-10-2012 08:26 PM

you can search apc_delete() and apc_cas() in php source if these functions exist

any configuration options in your site's php script regarding apc?

also change the settings of
apc.user_entries_hint 4096
to 10, to 16K(16384) etc, see the status of fragment.

semprot 12-10-2012 08:42 PM

Quote:

Originally Posted by NiteWave (Post 38818)
you can search apc_delete() and apc_cas() in php source if these functions exist

any configuration options in your site's php script regarding apc?

also change the settings of
apc.user_entries_hint 4096
to 10, to 16K(16384) etc, see the status of fragment.

I've checked the code, there is no apc_delete() & apc_cas(), but the apc_store() uses third parameter (the TTL -- that i set to 5 hours)
PHP Code:

apc_store($this->id($id), $value$vbulletin->options['vbo_ttl']); 

And there is apc_clear_cache, but i believe the apc_clear_cache is called manually from admin page. And i've just changed apc.user_entries_hint to 16384

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        /tmp/apc.gcrVQI
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


semprot 12-11-2012 10:36 AM

Update: after i set "apc.user_entries_hint" to higher number, fragmentation was better, i think it is solved. Thanks :)

NiteWave 12-11-2012 06:14 PM

thanks, a good example to discover apc.user_entries_hint behavior which most people(include both of us) may not know of. experience gained :)


All times are GMT -7. The time now is 11:29 AM.