我的程序作为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库
搜索了一下资料,和这个特性有关的参数是socket的一个参数设置`SO_RCVLOWAT`:
>接收低潮限度:对于TCP套接口而言,接收缓冲区中的数据必须达到规定数量,内核才通知进程“可读”。比如触发select或者epoll,返回“套接口可读”。缺省为1。
在go里,`net`库没有直接支持此参数。而且要注意的是,修改此参数具有一定的风险,因为低于此值长度的数据不会通知到进程可能导致程序逻辑错误。
#11
更多评论