5

我在 Windows 上运行 Nginx 的访问日志中遇到了一些奇怪的问题。我在访问日志中包含了 $request_time 以及 $upstream_response_time(将 Django 作为 fcgi 上游运行)。据我了解,日志应该以毫秒为单位表示请求时间,但它的输出如下所示:

ip|date|request_time|upstream_response_time
xx.xx.xx.xxx|[29/Jan/2013:15:29:57 -0600]|605590388736.19374237|0.141
xx.xx.xx.xxx|[29/Jan/2013:15:30:39 -0600]|670014898176.19374237|0.156

知道这个巨大的数字到底是什么!?

这是完整的日志格式(我在上面的例子中删除了几列)

log_format  main  '$remote_addr|$time_local]|$request|$request_time|$upstream_response_time|'
                  '$status|$body_bytes_sent|$http_referer|'
                  '$http_user_agent';

使用管道分隔符。

4

1 回答 1

12

因此,正如您所建议的,答案来了:

当您以GET 形式向服务器 ( nginx+ ) 发出请求时,结果会产生正常且可接受的值。发生这种情况是因为您的上游服务器没有参与其中,即使它参与了它也可以正常进行。upstream$request_time

当您执行 POST 请求时,问题就开始了。根据 nginx doc$request_time变量的值(仅在日志记录时可用)将在所有数据已发送且连接已关闭(也由所有上游和代理)时计算。然后才将信息附加到日志中。

那么如何检查一切是否正确呢?首先向您的服务器发出 GET 请求并查看日志文件。注意完成通话并将日志信息添加到文件中真正需要多少时间 - 它应该是真正的价值。接下来向您的服务器发出 POST 请求并再次查看日志文件。在这里,您可能会看到日志根本没有出现或在很长一段时间后没有出现。

这是什么意思?检查你的 nginx conf 和你的上游 conf,因为某处可能是连接没有关闭的地方,只是挂在空中。您的操作系统或上游服务器可能会在一段时间后更新这些连接,但毕竟它可能会导致一些问题,而不仅仅是奇怪的$request_time值。

于 2013-01-30T18:56:23.273 回答