php 扩展apc 参数优化

编辑php.ini

输入下面

[apc]

apc.enabled=1
apc.shm_segments = 1
apc.shm_size = 1G
apc.ttl = 0
apc.user_ttl = 0
apc.num_files_hint = 1000
apc.write_lock=1
apc.slam_defense=60
apc.stat = 1
apc.max_file_size=1M
apc.cache_by_default=1
apc.filters = NULL

 

解释下

apc.enabled 开启apc 设置为0关闭,1为开启


apc.shm_segments 共享内存块数
apc.shm_size 共享内存大小,可以设置1G
那么显然共享内存的总数就是apc.shm_segments*apc.shm_size


apc.num_files_hint 允许多少个opcode被缓存(也就是项目里面有几个php文件)


apc.stat 为1的时候会自动检查opcode对应的php文件是否有更新,有更新的话会自动更新。设置为0的话就不会去检查了这样会提高apc的效率,但是要使php的修改生效的话就必须重启apache了,或者使用函数apc_cache_clear()来清空缓存(经过我自己测试,设置为1或者0对qps影响不大,那么还不如设置为1,免得每次更改文件后还要重新清空缓存

 

apc.ttl opcode缓存的过期时间,设置为0表示不过期,如果不为0会检查两次请求之间的时间,如果时间大于设置值那么会更新opcode缓存(这个比较影响效率,建议设为0)

apc.write_lock 表示多个进程同时更新一份opcode缓存的时候那么只让最先的一个生效,可以有效避免写冲突


apc.max_file_size 超过设置值大小的文件不被缓存


apc.filters 需要特例的文件,多个文件用逗号(,)相隔
apc.filters 与 apc.cache_by_default结合使用,
当apc.cache_by_default为1时apc.filters文件不被缓存,当apc.cache_by_default为0时仅apc.filters文件被缓存

 

apc.slam_defense  当你的网站并发量很大的时候,可能出现由http守护进程fork的多个子进程同时缓存同一份Opcodes的情况。通过apc.slam_defense则可以减少这种事情的发生机率。比如,apc.slam_defense值设置为60的时候,当遇到未缓存的Opcodes,每100次有60次是不缓存的。

posted on 2013-08-13 18:06  xiaorao  阅读(811)  评论(0编辑  收藏  举报

导航