- 首页 > 睿知 > it技术 > >
服务中,如果一个socket来往的数据较多,可能存在接收不及时,buffer 满的状态,延时增加;
如何判断buffer 状态
netstat -nt |grep -E '8101|Recv-Q'
结果中 Recv-Q 即为接收缓冲区当前字节数,如果持续的保持不变,无法归零,那么就会存在程序接收不及时的情况;
文章图片
- 当一个线程(1个CPU) 负责多个socket.recv 时就会存在接收性能问题;
- 程序中,建议将socket.recv 接收函数,单独使用一个线程,接收与业务处理异步进行
如何设置socket 的buffer 大小
socket 的默认大小
- linux 系统手册的默认值
- cat /proc/sys/net/core/rmem_default
- -cat /proc/sys/net/core/wmem_default
- 【如何判断TCP socket 接收是否及时】tcp socket 的默认配置
- cat /proc/sys/net/ipv4/tcp_wmem
- cat /proc/sys/net/ipv4/tcp_rmem
- tcp 缓冲区的最大值配置
- cat /proc/sys/net/core/rmem_max
- 当设置的值超过,这个最大值,那么最终=2倍的最大值
推荐阅读