0

我遇到了一个问题,甚至不知道如何开始诊断它。

我当前的服务器设置如下;

Ubuntu 16.04、Apache 2.4、PHP7.0-FPM、Mysql 5.6 和 Varnish 4。

Apache 监听端口 443,Varnish 监听端口 80。对端口 443 的请求是 ProxyPass 到端口 80 上的 Varnish,如下所示(vhost 片段)。

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:80/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set Ssl-Offloaded 1 

Varnish 然后提供静态内容并将其他所有内容通过端口 8080 传递给 Apache。

PHP 请求由 php-fpm 处理,设置如下(vhost 片段)。

<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
</FilesMatch>

出于某种原因,当 Varnish 处理请求时,在浏览网站时,尤其是在将产品添加到购物车时,页面加载将暂停几乎完美的 60 秒,然后继续加载。在大多数情况下,它的加载速度非常快。但是当它挂起时,apache、varnish、php-fpm、mysql,包括 php-fpm 慢日志和 mysql 慢日志不会显示任何错误。

当 Varnish 被禁用(管道所有请求)时,我似乎无法重现该错误。

我如何查看是什么阻碍了请求或进程?

我很困惑下一步该去哪里看?

4

1 回答 1

0

原来这个问题是一个与管道发布请求 pre varnish 版本 4.1.3 相关的错误。

由于 Ubuntu 16.04 repo 有一个过时的 Varnish 4.1.1,我们受到了这个 bug 的影响。升级到最新的 Varnish 4.1.6 为我们解决了这个问题。

https://github.com/varnishcache/varnish-cache/issues/1806

于 2017-06-15T21:06:13.743 回答