Trong chương trình Go của tôi, tôi đã thực hiện một số yêu cầu HTTP và tôi cần thời gian phản hồi (và không yêu cầu thời gian).Phản hồi HTTP Thời gian trong Go
Đây là mã hiện tại của tôi (thời gian thời gian theo yêu cầu):
func Get() int {
start := time.Now()
result, err := http.Get("http://www.google.com")
if err != nil {
log.Fatal(err)
}
defer result.Body.Close()
elapsed := time.Since(start).Seconds()
log.Println(elapsed)
return result.StatusCode
}
Trên thực tế, mã này sẽ hiển thị một cái gì đó về thời gian 5s yêu cầu, bao gồm độ phân giải DNS và những thứ khác ... Nếu tôi thực hiện các thử nghiệm tương tự với một công cụ như Apache JMeter, thời gian chỉ khoảng 100ms (đó là thời gian phản hồi thực của máy chủ, mà không cần quan tâm đến thời gian yêu cầu).
Điều tôi thực sự muốn là tính toán thời gian phản hồi thực của máy chủ. Làm thế nào tôi có thể tính toán điều này trong Go?
Ý anh là gì bởi thời gian đáp ứng? Thời gian từ khi máy chủ hoàn tất việc xử lý yêu cầu đến khi máy khách nhận được yêu cầu đó? Tôi không chắc chắn làm thế nào mà có thể có được - các chuyến đi vòng chính nó, dns và tất cả những gì là một phần vốn có của chu kỳ HTTP ... Đặt cược tốt nhất của bạn sẽ là thời gian nó trên máy chủ. –
Ok đây là những gì tôi nghĩ. Trong thực tế, tôi không thực sự biết làm thế nào công cụ JMeter là tính toán thời gian này, nhưng tôi muốn một cái gì đó như thế này. JMeter không kiểm tra máy chủ (trong xác nhận của tôi). Tôi thử nghiệm với wget và thời gian là như nhau mà một trong những tính toán của chương trình của tôi (khoảng 5s bao gồm cả độ phân giải DNS). – Devatoria