Varnish的系统优化
优化threadobjectcache算法网络
原贴:http://joyleley.spaces.live.com/blog/cns!E162F872A7449BAC!158.entry
(一)参数优化.("telnet localhost 5000"后,输入"param.show"可以看到所有系统运行中的参数.输入"param.set thread_pools 8"可以调整参数.)
thread_pools 8 [pools]
thread_pool_max 2000 [threads]
thread_pool_min 100 [threads]
thread_pool_timeout 10 [seconds]
#这四个参数要一起看.
#thread_pools是系统sess进入处理的pools.理想的情况下是一个cpu一个pool,如果pools过多会消耗cpu时间和mem.但是,pools多一点,处理并发的能力会更强.
#thread_pool_min是每个pools的最小threads数.当pools侦测到可处理sess后,就分配给所属的空余threads处理.
#thread_pool_max是所有pools所属的threads总和数的上限值.这个值不要设置的太高,一般是系统期望峰值的90%.太高了会发生"pile-ups",不知道怎么翻译,是不是"拥挤"?
#thread_pool_timeout是thread的过期时间.当threads数大于thread_pool_min的时候,thread的空闲超过thread_pool_timeout时间,thread就被释放.
listen_depth 1024 [connections] #tcp链接队列size.默认是512,适当调大一点,处理并发能力增强.
lru_interval 3600 [seconds]
#优雅时间参数(不知道是不是应该这么翻译),意思就是,如果一个object,在内存中超过了这个时间还没有被重用,则把这个对象移动到LRU(Least RecentlyUsed)队列中.一种普遍的cache算法.个人理解,提高这个时间,会减少object在内存中的copy,以提高运行效率.
(二)VCL优化.
vcl_recv: set req.grace = 30s;
vcl_fetch: set obj.grace = 30s;
(三)系统环境优化
ulimit -HSn 131072
ulimit -HSc unlimited
(四)tcp/ip网络环境参数优化
修改"/etc/sysctl.conf".(官网上说,这个配置可以支持4000-8000 req/s的压力.)
net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 3
net.ipv4.tcp_tw_recycle = 1
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2