Varnish 无法正常启动(启动后崩溃),且没有错误消息

Varnish 无法正常启动(启动后崩溃),且没有错误消息

我在 Ubuntu 9.10 上的测试环境(虚拟机)中运行 Varnish(来自 Ubuntu 不稳定 apt 存储库的 2.0.4,尽管我也使用过标准存储库),很快就会是 10.04。

当我有一个有效的配置并且服务器成功启动时,似乎一切都很好,但是,如果由于某种原因,我停止然后重新启动 varnish 守护程序,它并不总是能正常启动,并且没有错误进入系统日志或消息来指示可能出了什么问题。

如果我在调试模式下运行 varnish ( -d) 并start在出现提示时发出问题,那么它将在 7 次超时后运行,但偶尔它会“悄悄地”关闭。

我的启动命令是($1 允许我传递-d给它所在的脚本):

varnishd -a :80 $1 \
-T 127.0.0.1:6082 \
-s malloc,1GB \
-f /home/deploy/mysite.vcl \
-u deploy \
-g deploy \
-p obj_workspace=4096 \
-p sess_workspace=262144 \
-p listen_depth=2048 \
-p overflow_max=2000 \
-p ping_interval=2 \
-p log_hashstring=off \
-h classic,5000009 \
-p thread_pool_max=1000 \
-p lru_interval=60 \
-p esi_syntax=0x00000003 \
-p sess_timeout=10 \
-p thread_pools=1 \
-p thread_pool_min=100 \
-p shm_workspace=32768 \
-p thread_pool_add_delay=1

VCL 如下所示:

# nginx/passenger server, HTTP:81
backend default {
.host = "127.0.0.1";
.port = "81";
}

sub vcl_recv {
  # Don't cache the /useradmin or /admin path
  if (req.url ~ "^/(useradmin|admin|session|sessions|login|members|logout|forgot_password)") {
    pipe;
  }

  # If cache is 'regenerating' then allow for old cache to be served
  set req.grace = 2m;

  # Forward to cache lookup
  lookup;
}

# This should be obvious
sub vcl_hit {
  deliver;
}

sub vcl_fetch {
  # See link #16, allow for old cache serving
  set obj.grace = 2m;

  if (req.url ~ "\.(png|gif|jpg|swf|css|js)$") {
    deliver;
  }

  remove obj.http.Set-Cookie;
  remove obj.http.Etag;

  set obj.http.Cache-Control = "no-cache";
  set obj.ttl = 7d;
  deliver;
}

如有任何建议,我们将不胜感激,这让我发疯了,特别是因为它是一种如此不一致的行为。

答案1

当调试模式和错误文件没有帮助时,strace 就是我们最好的朋友。

在 varnish start 命令之前输入strace -f -o strace.out,以便 strace 可以跟踪所有系统调用。

然后,查看 strace.out,特别是最后几行。在这种特殊情况下,strace 始终是指明方向的好工具。

希望这可以帮助。

答案2

升级到 2.1.2

http://sourceforge.net/projects/varnish/files/

您可以使用 alien 安装 RPM 版本(作为测试),然后将 Debian 软件包从 2.0 更改为创建 2.1.2 .deb

相关内容