4elements, web design and consultancy

  1. The Perfect APC Configuration

    I’m hosting about 10 ExpressionEngine sites using Apache 2, APC, and Memcached. Here is my configuration:

    Operating system - Mac OS X Server Lion 10.7.5 (11G63)
    Processor - 2 GHz Intel Core i7
    RAM - 16 GB 1333 MHz DDR3
    Disk - 13.5 TB total
    Apache - 2.2.22
    PHP - 5.3.15
    APC - 3.1.13

    My php.ini configuration

    [APC]
    apc.enabled=1
    apc.shm_segments=1

    ;51M per ExpressionEngine install
    apc.shm_size=512M

    ;Relative to the number of cached files (you may need to watch your stats for a day or two to find out a good number)
    apc.num_files_hint=7000

    ;Relative to the size of ExpressionEngine
    apc.user_entries_hint=4096

    ;The number of seconds a cache entry is allowed to idle in a slot before APC dumps the cache
    apc.ttl=7200
    apc.user_ttl=7200
    apc.gc_ttl=3600

    ;Setting this to 0 will give you the best performance, as APC will
    ;not have to check the IO for changes. However, you must clear
    ;the APC cache to recompile already cached files. If you are still
    ;developing, set this to 1
    apc.stat=0

    ;This MUST be 0, ExpressionEngine can have errors otherwise!
    apc.include_once_override=0

    ;Only set to 1 while debugging
    apc.enable_cli=0

    ;Allow 2 seconds after a file is created before it is cached to prevent users from seeing half-written/weird pages
    apc.file_update_protection=2

    ;Leave at 2M or lower. ExpressionEngine does't have any file sizes close to 2M
    apc.max_file_size=2M

    apc.cache_by_default=1
    apc.use_request_time=1
    apc.slam_defense=0
    apc.mmap_file_mask=/tmp/apc.XXXXXX
    apc.stat_ctime=0
    apc.canonicalize=1
    apc.write_lock=1
    apc.report_autofilter=0
    apc.rfc1867=0
    apc.rfc1867_prefix =upload_
    apc.rfc1867_name=APC_UPLOAD_PROGRESS
    apc.rfc1867_freq=0
    apc.rfc1867_ttl=3600
    apc.lazy_classes=0
    apc.lazy_functions=0


    While this configuration works great for me, it may not for you. Finding “The Perfect APC Configuration” is like asking how many stars are in the sky. The are endless variables, like, “How much RAM, how many websites, do your websites support lazy classes, etc…” The best way to create your config is to do a little research.

    P.S. There seems to be a lot of debate about apc.stat = 0. The general thought is, set apc.stat=0 on production servers and it will prevent APC from actually going to the IO to check if the file has been changed.

    My advice: If you are running ExpressionEngine set apc.stat = 0.

     

    0 Comments

    Leave a comment › Posted in: Daily

0 Comments

Got anything to add?

(Basic HTML is fine)