PHP 为不到 1% 的用户提供空白页面

Wer*_*reW 4 php varnish apache-2.2

我们最近将我们的站点迁移到了 varnish 后面的负载均衡的 apache 集群。从那时起,一小部分用户报告说他们无法查看任何页面。我已经把问题缩小了很多。这个问题在搬迁之前不存在,旧的基础设施是一个大盒子。

我们在 Rackspace Cloud 上运行 8 个 apache2 实例,在 varnish 3.0 后面使用 Rackspace Cloud 负载平衡器 (Zeus) 和 2 个 mysql 实例进行负载平衡,总共 10 个服务器,全部为 linux。

用户可以查看静态 html 文件。用户可以查看静态资产,例如图像。用户无法查看任何 php 文件,即使是一个只包含 phpinfo() 的简单文件;当负载均衡器从图片中取出时,用户无法查看任何 php 文件。

除了访问日志之外,apache 日志没有显示任何值得注意的内容。PHP错误报告设置为记录,不显示,虽然我设置为显示时间很短,但用户仍然得到一个没有错误的空白页面。Apache/Varnish/PHP 错误日志没有显示任何值得注意的内容。

服务器是:

  • Ubuntu 小牛 10.10
  • Apache 2.2.16-1ubuntu3.1 (mpm-worker)
  • PHP 5.3.3-1ubuntu9.5(在 fcgi 中使用)
  • PHP APC 正在使用中
  • 应用程序在代码点火器上
  • 清漆是 2.1.3,现在是 3.0.0 - 两个版本都存在问题
  • MySQL 是 master-master 设置中的数据库后端,但由于客户端访问问题,仅包含 phpinfo() 的文件;我确信数据库不是问题。

部分配置截图:

我可以提供进一步调试所需的任何/所有日志,但是对于遇到此问题的用户来说,其中没有任何值得注意的地方,典型的来自 apache 的访问,没有来自 php 的错误。

我有一种感觉,它可能以某种方式与 php 会话存储有关,尽管我无法确认这一点。

对这个问题的任何见解都非常感谢。最后再重申一次,这个问题只影响极少数用户。5-10 人就该问题与我们联系过,但我认为这个数字比那些懒得报告问题的人要多。与我们联系的这 5-10 位用户遍布各大洲/国家/ISP。

小智 5

也许这会对您有所帮助:您是否要启动 KeepAlive?

我们在使用 mpm-itk 的 varnish 中遇到了同样的问题,问题是,当使用不同的 vhost 访问 mpm-itk 时,实际保持活动会话是,他只是终止了连接。然后每个普通浏览器都会尝试重新连接,但 varnish 不在默认配置中。删除 KeepAlive 后,这种行为就不会发生,因此它解决了这个问题。

我知道,您没有使用 mpm-itk,但也许值得一试。

另一个想法:您可以绕过清漆访问该站点并尝试强制显示空白页面吗?所以你可能会发现清漆是否是问题所在。