1

我们的清漆实例

 /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 内存,16 核处理器,我们为清漆分配 24GB 内存

我们的 varnish 实例的平均正常运行时间仍然是 3 小时,这是非常低的。我们的缓存 TTL 是 1 小时,宽限期是 2 小时。我们通常每 5 分钟通过一个 java 进程刷新一次缓存内容[点击次数超过 n 次]。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]

关于我们错过了什么的任何输入?

4

1 回答 1

1

我最好的猜测是您有一个很长的 cookie 字符串(或其他自定义标头),因此它会溢出 http_req_hdr_len。我记得读过一些关于这样一个错误的内容,该错误已修复但 afaik 未在稳定版本中发布。恐怕我手头没有比我自己的记忆更好的来源了。

您还拥有非常高的 sess_workspace 和可能的线程总数。与在大多数设置中冒着交换风险相比,这对性能的影响要小。

于 2013-07-01T11:50:41.343 回答