不寻常的间歇性页面加载

Unusual intermittent page load

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

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

Ubuntu 16.04、Apache 2.4、PHP7.0-FPM、Mysql 5.6 和清漆 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(通过管道传输所有请求)时,我似乎无法重现错误。

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

我不知道接下来要看哪里?

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

由于 Ubuntu 16.04 存储库有一个过时的 Varnish 4.1.1,我们受到了该错误的影响。升级到最新的 Varnish 4.1.6 解决了我们的问题。

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