Python 日志nginx“;排队时间“;
我不知道“队列时间”是否是我试图记录的正确术语,也许TTFB(第一个字节的时间)更正确。Python 日志nginx“;排队时间“;,python,performance,nginx,logging,uwsgi,Python,Performance,Nginx,Logging,Uwsgi,我不知道“队列时间”是否是我试图记录的正确术语,也许TTFB(第一个字节的时间)更正确。 我试着用我做的测试来更好地解释: 我编写了一个小型python应用程序(flask framework),其中一个函数(一个端点)需要大约5秒来完成该过程(但睡眠5秒的结果相同)。 我使用uWSGI作为应用服务器,配置了1个进程和1个线程,nginx作为反向代理。 使用此配置,如果我从浏览器执行两个并发请求,我看到第一个请求大约在5秒钟内完成,第二个请求大约在10秒钟内完成。 没关系,只有一个uWSGI进程
我试着用我做的测试来更好地解释:
我编写了一个小型python应用程序(flask framework),其中一个函数(一个端点)需要大约5秒来完成该过程(但睡眠5秒的结果相同)。
我使用uWSGI作为应用服务器,配置了1个进程和1个线程,nginx作为反向代理。
使用此配置,如果我从浏览器执行两个并发请求,我看到第一个请求大约在5秒钟内完成,第二个请求大约在10秒钟内完成。
没关系,只有一个uWSGI进程,第二个请求必须等待第一个请求完成,但我要记录的是第二个请求在“队列”中等待uWSGI处理的时间 我尝试了我能找到的所有nginx日志变量,这些变量似乎与我的需求相关:
请求处理时间(以秒为单位,分辨率为毫秒);从客户端读取的第一个字节与最后一个字节发送到客户端后的日志写入之间经过的时间$request\u time
保持从上游服务器接收响应所花费的时间;时间以秒为单位,分辨率为毫秒$upstream\u response\u time
保持从上游服务器接收响应头所花费的时间(1.7.10);时间以秒为单位,分辨率为毫秒$upstream\u header\u time
我还尝试将变量
$msec
以秒为单位的时间,日志写入时的分辨率为毫秒
以及一个自定义变量$my_start_time
,在服务器部分的开头用set$my_start_time“${msec}”初始化代码>在此上下文中,msec为:
以毫秒为分辨率的当前时间(秒)
但在这种情况下,两次请求之间的差异约为5秒
我想nginx应该知道我尝试记录的时间,或者至少知道请求的总时间,从中我可以减去“请求时间”并获得等待时间
如果我使用chrome浏览器分析请求并检查瀑布,我会看到第一个请求的总时间约为5秒,其中几乎所有的请求都在“等待(TTFB)”,而第二个请求的总时间约为10秒,其中约5秒在“等待(TTFB)”行,约5秒在“暂停”行。
我想从服务器端记录的时间是chrome报告的“暂停”时间;从这个问题:
我知道这一次与代理协商有关,所以我想它与充当反向代理的nginx有关
测试配置是通过长进程完成的,以便更容易地测量这些时间,但是只要有比uWSGI进程更多的并发请求,时间就会出现,尽管会更短
我是不是漏掉了什么东西?
“排队时间”的正确名称是什么?
如何记录它?
提前谢谢你的建议