fix(proxy): correct response time recording for Least Time
- Record headerTime when header is received - Record lastByteTime when response is complete - Use correct timing calculations (headerReceived/connectEnd/responseEnd)
This commit is contained in:
parent
72f189bba8
commit
e5885ce888
@ -874,11 +874,10 @@ func (p *Proxy) ServeHTTP(ctx *fasthttp.RequestCtx) {
|
||||
// 记录首字节时间
|
||||
timing.MarkHeaderReceived()
|
||||
|
||||
// 记录响应时间(用于 least_time 负载均衡)
|
||||
// 记录首字节响应时间(用于 least_time 负载均衡)
|
||||
if recorder, ok := p.balancer.(loadbalance.ResponseTimeRecorder); ok {
|
||||
headerTime := timing.connectEnd.Sub(timing.connectStart)
|
||||
lastByteTime := timing.connectEnd.Sub(timing.connectStart)
|
||||
recorder.RecordResponseTime(target, headerTime, lastByteTime)
|
||||
headerTime := timing.headerReceived.Sub(timing.connectEnd)
|
||||
recorder.RecordResponseTime(target, headerTime, 0)
|
||||
}
|
||||
|
||||
// 请求成功,减少连接计数
|
||||
@ -985,6 +984,15 @@ func (p *Proxy) ServeHTTP(ctx *fasthttp.RequestCtx) {
|
||||
|
||||
// 修改响应头
|
||||
p.modifyResponseHeaders(ctx)
|
||||
|
||||
// 记录完整响应时间(用于 least_time 负载均衡)
|
||||
timing.MarkResponseEnd()
|
||||
if recorder, ok := p.balancer.(loadbalance.ResponseTimeRecorder); ok {
|
||||
headerTime := timing.headerReceived.Sub(timing.connectEnd)
|
||||
lastByteTime := timing.responseEnd.Sub(timing.connectEnd)
|
||||
recorder.RecordResponseTime(target, headerTime, lastByteTime)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user