he liu
he liu
> 我读了一下http.go代码,发现其中存在的问题非常多,你是自己实现了一个简单的反向代理,但为了实现flow控制代码逻辑过于简单,对于例如response都是先dump再write,如果客户端发送一个很大的文件,将对服务端产生巨大压力,并且由于需要完全接受,所以FTTB就会很长。 > > 另外在for循环中bufio.NewReader的行为也不可接受,创建了一大堆临时对象却不释放,并且bufio本身会从io.Reader中缓存数据,这也就是 > > https://github.com/ehang-io/nps/blob/c9b755360c3b3513e53bb265ae49703f06d6f34f/server/proxy/http.go#L239 > > 的问题所在。 对于你说的【response都是先dump再write】这个只是针对需要缓存的情况,正常情况不会dump,bufio.NewReader确实是个问题。 代码刚开始写的比较粗糙,确实有很多不足之处,也欢迎大家pr修改。
>  > 遇到了同样的问题,docker运行nps cpu 频繁被拉满,版本0.26.4,在线客户端不超过10个 这叫什么拉满,拉满该一直100%。第一这才60%,第二这并不是一直,有负载得时候 cpu上升再正常不过了