GO服务端Syscall CPU开销过高

woaichimian · · 6862 次点击
stevewang
耶和华是我的牧者,我必不至缺乏。
搜索了一下资料,和这个特性有关的参数是socket的一个参数设置`SO_RCVLOWAT`: >接收低潮限度:对于TCP套接口而言,接收缓冲区中的数据必须达到规定数量,内核才通知进程“可读”。比如触发select或者epoll,返回“套接口可读”。缺省为1。 在go里,`net`库没有直接支持此参数。而且要注意的是,修改此参数具有一定的风险,因为低于此值长度的数据不会通知到进程可能导致程序逻辑错误。
#11
更多评论
stevewang
耶和华是我的牧者,我必不至缺乏。
syscall.Write调用比较频繁,可以考虑用缓存或者批量写的方式进行优化。
#1
stevewang
耶和华是我的牧者,我必不至缺乏。
连接数目、数据量的影响很大。 有的时候负载确实就有这么多。
#2