我有一项服务,手机可以将大量散列数据发送到位于 ELB 后面的 AWS 上的服务器。有时我们会在 apache 错误日志中收到 70007 和 70014 错误,这些请求显示在 apache access.log 上,但不显示在 Rails 日志中。我试图找出这些错误是什么。我们现在的理论是电话断开连接,并且它发生在向我们发送请求之前,因此它永远不会到达 Rails 服务器。
错误如下:
Unexpected error in mod_passenger: An error occurred while receiving HTTP upload data: The timeout specified has expired (70007)
Unexpected error in mod_passenger: An error occurred while receiving HTTP upload data: End of file found (70014)
从我所做的所有谷歌搜索中,这就是我得到的:
70014:文件结束错误,根据我们的理论,这是完全合理的。
70007:超时。我将 %D 设置为 apache 日志格式,得到的时间在 10-90 秒之间。我们的 Apache 超时设置为 300 秒。此外,许多请求花费的时间超过 10 秒,而且不会超时。我还以为可能是 TCP 超时,但经过调查发现 TCP 超时设置为 7200 秒;所以也不是这样的。
知道这可能是什么吗?我还应该去哪里寻找?
答案1
Serverfault 上的这个问题涵盖了这个问题,标题为:Apache 代理超时。你有2个选择:
调高日志记录级别
LogLevel DEBUG
日志记录级别也可以针对特定模块:
LogLevel INFO proxy_module:trace5
增加 Apache 和 Rails 应用程序之间的代理超时
ProxyPass /boom/ga https://super-load1-ga.test.com connectiontimeout=300 timeout=300