一、修改套接字socket的缓存大小

echo 65536 > /proc/sys/net/core/rmem_max#收缓冲区最大值
echo 256960 > /proc/sys/net/core/wmem_max#发缓冲区最大值
echo 65536 > /proc/sys/net/core/rmem_default#收缓冲区默认值
echo 65536 > /proc/sys/net/core/wmen_default#发缓冲区默认值

setsockopt进行设置。通过setsockopt的设置,能设置的接收缓冲区的最大值是8M,发送缓冲区的最大值是16M(Linux 2.6.6中)。
getsockop获取缓存大小

int buflen = 65536*10;
设置读缓存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,4))
{
return OS_ERROR;

}
设置写缓存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_SNDBUF,&buflen,4))
{
return OS_ERROR;

}
socklen_t getnumlen=4;
读取写缓存大小
if(0!=getsockopt(g_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,&getnumlen))
{
printf("\n%s\n",strerror(errno));
return OS_ERROR;

二、修改tcp接收/发送缓冲区
最小值 默认值 最大值

echo "4096 32768 65536" > /proc/sys/net/ipv4/tcp_rmem#tcp收缓冲区的默认值 
echo "4096 65536 256960" > /proc/sys/net/ipv4/tcp_wmem#tcp发缓冲区默认值

三、修改udp接收/发送缓冲区

echo "4096" > /proc/sys/net/core/rmem_default#udp接收缓冲区的默认值
echo "4096" > /proc/sys/net/core/wmem_default#udp发送缓冲区的默认值

四、修改网络设备接收队列
设置500个长度的队列

echo 500 > /proc/sys/net/core/netdev_max_backlog

五、重传次数
设置重传次数为5

echo 5 > /proc/sys/net/ipv4/tcp_retries2
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐