fasthttp

转自:
https://segmentfault.com/a/1190000009133154

goroutine status:

main0: wp.Start()

g1: for loop to clean idle workerChan

g2: wp.workerFunc(ch) blocks for handling connection

g3: ....

g4: ....

按需增长 goroutine 数量,但是也有一个最大值, 所以并行度是可控的。当请求密集时,一个 worker goroutine 可能会串行处理多个 connection。
wokerChan 在 Pool 中被复用,对GC的压力会减小很多。

而对比原生的 net/http 包,并行度不可控(可能不确定,runtime 会有控制? ),goroutine 不可被复用,体现在一个请求一个goroutine, 用完就销毁了,对机器压力更大。

作者:gopher_linuxer
链接:https://segmentfault.com/a/1190000009133154
来源:SegmentFault 思否
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(fasthttp)