有一些极端的case中,request_time 和 upstream_response_time 会差的很大,比如说
1.643s vs 0.177s.
为了排查这个问题,我利用 set/rewrite_by_lua_block 在请求头中记录了时间。
set_by_lua_block $a { ngx.req.set_header("x-debug-set", ngx.now()) }
rewrite_by_lua_block { ngx.req.set_header("x-debug-rewrite", ngx.now()) }
在上述的例子中,观察到:
- x-debug-set is 1702053191.332
- x-debug-rewrite is 1702053192.798.
观察到二者巨大的差距后,我开启了 rewrite_by_lua_no_postpone 。
结果并没有改变。
所以在开启 no_postpone 后,set 和 rewrite 之间具体会发生什么呢?
有什么思路定位这个巨大的耗时到底花费在哪里了吗?