我们如何解决Nginx + PHP + FastCGI的这些错误?

我们使用Nginx + PHP + FastCGI作为我们的Web服务器,我们在错误日志中看到了一堆超时错误(见下文)。 我们很快重新启动了nginx,并解决了问题 – 现在。 但是,我们正试图find根本原因并解决问题,所以不会再发生。

特别,

  • 你能向我们解释这个错误还是指出我们朝着正确的方向?
  • 看起来我们一起发生了两个错误:18657(连接失败)和18656(上游超时)。 他们什么时候发生?
  • 有没有办法看到错误发生时服务器上的networking统计信息? 我们希望看到有多less个php进程,入站连接等,当我们遇到问题的时候。
  • 我们怎么能重现这个问题,并确定它?

这里是错误(我们看到数百个,发表了一些):

  • error.log:2011/08/04 19:31:44 [error] 18657#0:* 464859 connect()失败(110:连接超时)连接上游时,client:166.205.138.117,server:api.website .com,请求:“POST / v3 / logAgentEvent HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“api.website.com”
  • error.log:2011/08/04 19:31:44 [error] 18656#0:* 464476上行超时(110:连接超时),从上游读取响应头时,客户端:98.140.86.90,server:api。 website.com,请求:“POST / v3 / logAgentEvent HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“api.website.com”

你能向我们解释这个错误还是指出我们朝着正确的方向?

检查导致错误的组件的文档和/或源代码。

看起来我们一起发生了两个错误:18657(连接失败)和18656(上游超时)。

  • 18657(连接失败) :看起来像这个错误是由您使用的FASTCGI实施触发的。 检查他们的文档/源代码的含义。
  • 18656(上游超时) :看起来像这个错误是由您使用的FASTCGI实施触发的。 检查他们的文档/源代码的含义。

他们什么时候发生?

您可以在发生日志时(及时)find日志中的时间戳。 要理解它们出现的原因(如何),请检查文档/源代码。 如果这对您来说太复杂了,请联系您的系统pipe理员,让它为您分析。 对于您使用的确切服务器版本,您正在使用的确切FASTCGI实现以及您正在使用的确切PHPconfiguration,这可以是非常具体的。

有没有办法看到错误发生时服务器上的networking统计信息? 我们希望看到有多less个php进程,入站连接等,当我们遇到问题的时候。

联系您的系统pipe理员。 她/他应该能够提供您正在寻找的任何types的监控。 (这个选项可能只适用于未来,而不是过去)

我们怎么能重现这个问题,并确定它?

除非你find原因,否则不能具体回答。 您可以开始监视并等待它发生,或者您可以尝试通过一次抽取数千个请求来激发您的服务器。


我强烈build议你开始监视你的服务器。 这将使您更好地了解可能运行哪些问题。 你描述的两个错误看起来像networking问题。 这可能是您正在联系的服务器(可能是本地计算机)超时(上游超时),甚至拒绝连接(连接失败)。

然后,您可以尝试不要让太多的连接触发这个,所以直接将故障转移给用户(而不是过分强调系统)和/或如果您能find原因,请调整networking设置以更好地处理与您典型的网站使用的要求。 但是,服务器在技术上可能无法处理您所面临的请求的数量/types(硬性限制)。 监控将帮助你找出答案。