【问题标题】:Diagnosing a HTTP 500 Error With Apache and HAProxy使用 Apache 和 HAProxy 诊断 HTTP 500 错误
【发布时间】:2018-09-07 14:09:00
【问题描述】:

我正在处理的一个应用程序遇到了一个问题,这让我完全陷入了困境。该程序是一个 iOS 应用程序,需要能够从 SVN 服务器异步下载图像。用户一直在报告丢失的图像,当我深入研究代码时,我注意到一些下载超时。我尝试增加请求的超时时间并添加代码以重试失败但没有成功。

查看 Web 服务器的 apache 访问日志,我注意到一些下载请求失败并出现“500”错误。问题是,我实际上没有在顶级 apache 错误日志或该站点的 apache 错误日志中看到为这些错误记录的任何详细信息。我能找到的大部分信息都是针对有 php 问题的人,但我已经排除了这种可能性。 php 的错误日志记录已启用,我在这些日志中看不到任何内容。

我的另一个想法是,将请求定向到我的 Web 服务器的代理服务器 (haproxy) 可能存在问题,但这似乎也可以正常工作。如果我查看 haproxy 日志中失败请求的行,它显示状态“200”。

任何人都可以对此有所了解吗?丢失的图像对我的用户来说是一个主要问题,我不知道还能看到什么。

更新: 我想我可以排除代理服务器的原因。我修改了代码,通过ip地址直接指向svn服务器,结果是一样的。

apache访问日志

"GET /svn/mysite/33245/img/13301.jpg HTTP/1.1" 500 500 1 251118 "-" "MyApp/1.1.57 CFNetwork/758.5.3 Darwin/15.6.0"

haproxy 日志:

http-in backend_www_static/web01 21/0/1/3/1746 200 96024 - - CD-- 3/3/1/1/0 0/0 "GET /svn/mysite/33245/img/13301.jpg HTTP/1.1"

【问题讨论】:

  • 您查看过日志,但您是否尝试过自己复制这些错误?如果您可以复制错误,您就可以开始测试,例如,将服务器与代理分开。
  • 不幸的是,这是一个生产服务器,所以我不能直接关闭代理。
  • 不需要关闭代理。只需将后端与代理分开测试,直接或使用另一个不同配置的代理即可。
  • 你能提供一些我将如何做到这一点的例子吗?请记住,我没有可以直接测试的“后端”,只有一个 svn 服务器可供我发出 GET 请求。
  • 支持 svn 服务器。您可以使用代理服务器中的 curl 复制这些查询吗?您可以在类似的地方(网络方面)制作另一个代理并通过它进行查询吗? “privoxy”是一种快速简单的安装和配置方式。

标签: apache http asynchronous svn haproxy


【解决方案1】:

我最终发现问题的根源实际上是在客户端。我同时向网络服务器发送了太多请求,并且它令人窒息(有关更多详细信息,请参阅:Incrementing a Variable from an Asynchronous Block in Objective-C)。也就是说,我从来没有弄清楚如何真正找到任何相关日志,所以我暂时将其保持打开状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2012-09-02
    • 1970-01-01
    相关资源
    最近更新 更多