【问题标题】:Varnish Cache log not working清漆缓存日志不起作用
【发布时间】:2012-08-23 08:21:20
【问题描述】:

varnishlog 正在返回:

_.vsm: No such file or directory

有没有其他人见过这个?

【问题讨论】:

    标签: varnish


    【解决方案1】:

    varnishlog 似乎没有指向正确的目录,或者没有访问权限。

    请检查 varnishd 的命令行选项。如果守护进程使用 -n <instancename> 参数运行,您还必须将其添加到 varnishlog

    第二件事,就是查看varnish目录的权限。 要查看当前使用的目录,您必须登录到 root 并运行以下命令:

    $ lsof -p <PID of varnishd> | grep vsm
    

    一旦显示,您只需确保完整路径对您的用户具有读取权限。

    【讨论】:

      【解决方案2】:

      在 Varnish 4.1 中,根本原因可能是由于读取 _.vsm 文件的权限不正确。例如:

      # service varnishncsa start
       * Starting HTTP accelerator log deamon                                                                                                                                                               [fail] 
      Can't open log - retrying for 5 seconds
      Can't open VSM file (Cannot open /var/lib/varnish/dev-me/_.vsm: Permission denied
      

      Varnishncsa 从varnishlog 用户工作。但/var/lib/varnish/dev-me/_.vsm 只能从 varnish 组或 root 用户读取:

      # ls -l /var/lib/varnish/dev-me/_.vsm
      -rw-r----- 1 root varnish 84934656 Apr 15 05:58 /var/lib/varnish/dev-me/_.vsm
      

      所以你可以通过以下方式解决这个问题:

      # usermod -a -G varnish varnishlog
      # id varnishlog
      uid=110(varnishlog) gid=116(varnishlog) groups=116(varnishlog),115(varnish)
      

      现在您可以启动 varnishncsa。

      【讨论】:

        【解决方案3】:

        在我们的例子中,服务器的主机名已更改。

        如果您不指定实例名称,varnish 将使用主机名。它正在寻找一个使用新主机名保存共享内存日志记录配置的目录,但实例仍在使用旧主机名的目录运行。

        重启清漆解决了这个问题。

        【讨论】:

          【解决方案4】:

          我在尝试发出 varnishadm 命令时收到了同样的错误消息。原来我在没有停止清漆的情况下重命名了我的机器。 /var/varnish/ 中有一些目录对应于 varnish 需要访问的机器名称。 “sudo service varnish restart”为我解决了这个问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-04-19
            • 2021-08-05
            • 1970-01-01
            • 2012-04-03
            • 1970-01-01
            • 2016-05-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多