1

我有一个提供 RESTful API 的 Apache2 和 Django (mod_wsgi) 设置。我为此有一组自动化测试,按顺序执行约 1000 个 API 请求(纯 http GET/POST/PUT/DELETE)。

问题是,对于每 80 个左右的请求,我会在 5 秒或 10 秒内得到一个奇怪的延迟/超时。在此处查看时间戳示例:

Request 1:  2013-08-30T03:49:20.915
Response 1: 2013-08-30T03:49:30.940
Request 2:  2013-08-30T03:50:32.559
Response 2: 2013-08-30T03:50:37.597

我不明白为什么会这样。我有一个带有 KeepAlive Off 的 apache 配置(Django 的推荐设置设置),但 Ubuntu 12.04 LTS 的其他标准安装。

我正在从网络服务器所在的同一台服务器上运行测试,我首先认为这是某种 DNS 缓存,但我已将我请求的主机名添加到 /etc/hosts 但问题仍然存在。

当这种延迟/超时发生时,系统处于空闲状态并且有很多 cpu 和 mem。延迟并非特定于某个请求(URL),它似乎有点随机。

考虑到它总是精确到毫秒 5s 或 10s,感觉这是某个特定的设置导致了这种情况。

4

2 回答 2

1

如果它提供了一些见解,请观看我在 PyCon US 的演讲。

该演讲涉及流程流失和启动成本等问题。如果您真的不需要它,您不应该做的一件事是设置最大请求。

还可以考虑尝试使用 New Relic 来帮助诊断问题所在。如果它是后端服务基础设施问题的 Web 应用程序,这将节省很多猜测。

至于这种监控如何提供帮助,请观看我的另一场 PyCon 演讲。

于 2013-08-30T20:25:26.470 回答
0

这是一个DNS问题,将我在本地使用的域名添加到/etc/hosts实际上解决了这个问题。我只是没有重新启动服务器以使更改生效,以为重新启动网络会解决这个问题,但显然不是。

于 2013-09-20T12:51:35.553 回答