Hi, I have some doubts related to the HTTP client.
I have an HTTP service that in the handler calls synchronously to another HTTP service (serviceA). (I will call it case 1). func withoutGoroutine(w http.ResponseWriter, r *http.Request) { httpGetA() _, err := w.Write([]byte(``)) if err != nil { log.Printf("%v", err) } } The same service has another handler, it does the same that case 1 with an additional asynchronous HTTP call to a different service (serviceB) using a different HTTP client (I will call it case 2). func withGoroutine(w http.ResponseWriter, r *http.Request) { httpGetA() _, err := w.Write([]byte(``)) if err != nil { log.Printf("%v", err) } go httpGetB() } I run some load tests over these handlers with these results Case 1 ab -n 500000 -c 50 0.0.0.0:8080/withoutgoroutine ... Percentage of the requests served within a certain time (ms) 50% 3 66% 4 75% 4 80% 4 90% 5 95% 7 98% 10 99% 11 100% 38 (longest request) Case 2 ab -n 500000 -c 50 0.0.0.0:8080/withgoroutine ... Percentage of the requests served within a certain time (ms) 50% 5 66% 5 75% 6 80% 6 90% 8 95% 10 98% 14 99% 16 100% 42 (longest request) Why case 2 has slower responses? If in case 2 I add more asynchronous calls (two or three) the response time were worst and worst. I would expect the same response time. To be sure about the problem is not the creation of goroutines, I created a third case: Case 1 with the creation of goroutines but without an HTTP call. func withSleepyGoroutine(w http.ResponseWriter, r *http.Request) { httpGetA() _, err := w.Write([]byte(``)) if err != nil { log.Printf("%v", err) } go func() { time.Sleep(1 * time.Millisecond) }() } In cases 2 and 3, the goroutines are created after the HTTP response is sent. I made the load tests in different machines to dismiss a network issue. The full source code is available in this Github repo. https://github.com/juanpabloaj/go_http_with_concurrency Thanks a lot for your help. Regards -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/fce6ddc1-556b-4cde-9071-5fb129adb34dn%40googlegroups.com.