eriklupander/gotling

evaluate and use fasthttp

missedone opened this issue · 8 comments

i saw this https://github.com/rakyll/boom/issues/94, we probably can evaluate it and use it if it really promise.

Sounds great. Assigned the issue to you if you want to give it a shot.

HTTP performance have been quite good so far, on my laptop (OS X) I usually run out of file handles before the CPU usage goes above 100% on a single core. But having less CPU usage due to HTTP implementation overhead sounds good.

Regarding memory use, I've seen pretty consistent behaviour where Gotling uses about 8 kb (each goroutine) x number of concurrent "users".

sure, will have a try later

i just pushed the initial implementation with fasthttp on feature/fasthttp branch.
for now, only GET is supported, i did a quick test, and found that there is performance degradation with fasthttp compared to stdlib net/http.
will dig deeper later to understand why.

below is an example, you can uncomment the client: fasthttp line to use fasthttp, by default it's using net/http:

---
iterations: 10
users: 10
rampup: 10
actions:
  - http:
      title: Ping Google
      method: GET
      # client: fasthttp
      url: https://www.google.com

Thanks, awesome work. Did you get the performance issue sorted out?

nope, even i use the lock-free approach for creating request/response object in commit: da3a8d5

i guess there still other lock/sync operation in fasthttp internal, will see.

i'd like to pend this since still fasthttp not perform as fast as net/http.

Ok, good work nevertheless.

jkpl commented

Interesting work! :-) I wonder if sharing a single fasthttp client across multiple go-routines would help.