一、修改套接字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进行设置,可以先通过getsockop获取缓存大小。
int buflen = 4*1024*1024;
设置读缓存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,sizeof(buflen)))
{
return -1;
}
设置写缓存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_SNDBUF,&buflen,sizeof(buflen)))
{
return -1;
}
socklen_t getnumlen=4;
读取写缓存大小
if(0!=getsockopt(g_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,&getnumlen))
{
printf("\n%s\n",strerror(errno));
return -1;
}
二、修改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 "8388608" > /proc/sys/net/core/rmem_default #udp接收缓冲区的默认值
echo "8388608" > /proc/sys/net/core/wmem_default #udp发送缓冲区的默认值
四、修改网络设备接收队列
设置接收队列的长度为500。
echo 500 > /proc/sys/net/core/netdev_max_backlog
五、TCP重传次数
设置tcp重传次数为5。
echo 5 > /proc/sys/net/ipv4/tcp_retries2