我们的清漆实例
/usr/sbin/varnishd -P /var/run/varnish.pid -a :6081 -f /etc/varnish/cm-varnish.vcl -T 127.0.0.1:6082 -t 1h -u varnish -g varnish -S /etc/varnish/secret -s malloc,24G -p shm_reclen 10000 -p http_req_hdr_len 10000 -p thread_pool_add_delay 2 -p thread_pools 8 -p thread_pool_min 500 -p thread_pool_max 4000 -p sess_workspace 1073741824
32G Ram,16核心处理器,我们为清漆分配24GB内存
我们的清漆实例的平均正常运行时间仍为3小时,非常低。我们的缓存TTL是1Hr,Grace时间是2小时。一旦我们通常通过java进程刷新缓存内容[超过n次命中],每5分钟一次。我们通过常量轮询varnishncsa
输出来跟踪清漆的命中。
我尝试了varnishadm panic.show
Last panic at: Thu, 23 May 2013 09:14:42 GMT
Assert error in WSLR(), cache_shmlog.c line 220:
Condition(VSL_END(w->wlp, l) < w->wle) not true.
thread = (cache-worker)
ident = Linux,2.6.18-238.el5,x86_64,-smalloc,-smalloc,-hcritbit,epoll
Backtrace:
0x42dc76: /usr/sbin/varnishd [0x42dc76]
0x432d1f: /usr/sbin/varnishd(WSLR+0x27f) [0x432d1f]
0x42a667: /usr/sbin/varnishd [0x42a667]
0x42a89e: /usr/sbin/varnishd(http_DissectRequest+0xee) [0x42a89e]
0x4187d1: /usr/sbin/varnishd(CNT_Session+0x741) [0x4187d1]
0x42f706: /usr/sbin/varnishd [0x42f706]
0x3009c0673d: /lib64/libpthread.so.0 [0x3009c0673d]
0x30094d40cd: /lib64/libc.so.6(clone+0x6d) [0x30094d40cd]
关于我们错过什么的任何意见?
答案 0 :(得分:1)
我最好的猜测是你有一个很长的cookie字符串(或其他自定义标题),以便它溢出http_req_hdr_len。我记得读过一些关于这样一个错误的东西,这个错误已被修复,但afaik没有在稳定版本中发布。我恐怕没有比手头的记忆更好的来源了。
您还拥有非常高的sess_workspace和可能的线程总数。对于性能的影响要小于在大多数设置中冒险进行交换的风险。