[solved] Rapid APC Caching Causes Fragmentation

Discussion in 'PHP' started by semprot, Dec 14, 2012.

  1. semprot

    semprot Member

    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: Dec 15, 2012
  2. NiteWave

    NiteWave Administrator

    no, user_entries_hint is number of enties, each entry size is 100kb if your guess right.
  3. semprot

    semprot Member

    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?
  4. NiteWave

    NiteWave Administrator

    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.
  5. semprot

    semprot Member

    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)
  6. NiteWave

    NiteWave Administrator

    the 1st one:
    > 3 (number of variables)
  7. semprot

    semprot Member

    Thanks... :)

Share This Page