apache - 使用 Apache 和 HAProxy 诊断 HTTP 500 错误
问题描述
我正在处理的一个应用程序遇到了一个问题,这让我完全被难住了。该程序是一个 iOS 应用程序,需要能够从 SVN 服务器异步下载图像。用户一直在报告丢失的图像,当我深入研究代码时,我注意到一些下载超时。我尝试增加请求的超时时间并添加代码以重试失败但没有成功。
查看 Web 服务器的 apache 访问日志,我注意到一些下载请求因“500”错误而失败。问题是,我实际上没有在顶级 apache 错误日志或该站点的 apache 错误日志中看到为这些错误记录的任何详细信息。我能找到的大部分信息都是针对有 php 问题的人,但我已经排除了这种可能性。php 的错误日志记录已启用,我在这些日志中看不到任何内容。
我的另一个想法是,将请求定向到我的 Web 服务器的代理服务器(haproxy)可能存在问题,但这似乎也可以正常工作。如果我查看 haproxy 日志中失败请求的行,它显示状态“200”。
任何人都可以对此有所了解吗?丢失的图像对我的用户来说是一个主要问题,我不知道还能看什么。
更新: 我想我可以排除代理服务器的原因。我修改了代码,通过ip地址直接指向svn服务器,结果是一样的。
阿帕奇访问日志
"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"
代理日志:
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"
解决方案
我最终发现我的问题的根源实际上是在客户端。我同时向 Web 服务器发送了太多请求并且它被阻塞了(有关详细信息,请参阅:在 Objective-C 中从异步块中增加变量)。也就是说,我从来没有弄清楚如何真正找到任何相关的日志,所以我暂时保持打开状态。
推荐阅读
- c++ - c++ protobuf oneof 反序列化
- html - ESP8266 ESPAsyncWebServer 不会在回调中切换 GPIO
- python - 如何使用 NEAT(增强拓扑的神经进化)进化 LSTM 模型?
- python - 如何在不刷新 python 缓冲区的情况下打印换行符?
- objective-c - 如何在运行时取消 NSTimer?(目标 C)
- c# - 有效地计算两张 6 张牌和一次切牌的方法数
- scala - Scala Play 2.8 FieldConstructor 类型和 IntelliJ:无法解析符号 f
- bootstrap-4 - 是否可以将引导示例页面用于商业网站
- python - 如何从机器人离线时添加前缀。不和谐.py
- html - 减少一个接近链接锚点时的不透明度