我的程序作为proxy转发来自于后端前端的数据,现在遇到一个问题,我用pprof工具分析得到
![屏幕快照 2016-09-07 下午3.24.54.png](http://studygolang.qiniudn.com/160907/05362ee90ead225328071ef4efba816e.png)
![屏幕快照 2016-09-07 下午3.36.36.png](http://studygolang.qiniudn.com/160907/d0ea8db3315e243f34ebccf0f3cc0f69.png)
syscall 占用了30%左右的CPU开销,
根据GV图主要集中在写的上面
想问问能从什么地方对它进行优化?
底层网络库用的是GO net库
对了我在看syscall 时还有个问题` nn, err := b.netconn.Read(b.buf)`我会调用这个来从网络I/O读BUFFER 我可能会收到很长的一段数据,但是发现每次都没有把BUFFER填满 就返回了,怎么设计能让它尽可能多的填满BUFFER再返回呢,我现在想的是循环读,但是有一种可能是没有数据过来会阻塞在这里么,然后用超时来跳出。
#9
更多评论