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
http://blog.chinaunix.net/uid-9093140-id-3487333.html
1、修订单个socket的缓冲区大小:通过setsockopt使用SO_RCVBUF来设置接收缓冲区,该参数在设置的时候不会与rmem_max进行对比校验,但是如果设置的大小超过rmem_max的话,则超过rmem_max的部分不会生效;
2、修订linux系统udp缓冲区大小:通过rm
限制Linux中缓冲区缓存的大小有没有办法告诉Linux内核只使用一定比例的内存用于缓冲区缓存?我知道/proc/sys/vm/drop_caches可用于临时清除缓存,但是有任何永久设置可以防止它增长到超过例如50%的主存?我想要这样做的原因是,我有一台运行Ceph OSD的服务器,它不断地从磁盘提供数据,并设法在几个小时内将整个物理内存用作缓冲区缓存。同时,我需要运行将分配大量(几十GB)物理...
Linux下tcp 和 udp 套接字收发缓冲区的大小决定规则1. tcp 收发缓冲区默认值[root@ ]# cat /proc/sys/net/ipv4/tcp_rmem4096 87380 416153687380 :tcp接收缓冲区的默认值[root@ ]# cat /proc/sys/net/ipv4/tcp_wmem4096 16384 416153616384...
linux网卡udp缓冲区One of the most common causes of UDP datagram lost on Linux is an undersized receive buffer on the Linux socket. How to enlarge Linux UDP buffer size? 在Linux上丢失UDP数据报的最常见原因之一是Linux套接字上的接收...
echo 65536 > /proc/sys/net/core/rmem_min
echo 256960 > /proc/sys/net/core/wmem_max
echo 65536 > /proc/sys/net/core/wmen_default
二、修改tcp接收/发送缓冲区
最小值 最大值 默认值
echo "4096 32768 65536" > /proc/sys/net/ipv4/tcp_rmem
通过键入以下命令来检查当前的UDP / IP接收缓冲区默认值和限制:
$ sysctl net.core.rmem_max
net.core.rmem_max = 212992
$ sysctl net.core.rmem_default
net.core.rmem_default = 212992
默认208K
修改为5M
修改/etc/sysctl.conf,加入两行(重启生效)
net.core.rmem_max=5242880
net.core.rmem_default=5242880
调整TCP缓冲区
TCP 连接是由内核维护的,内核为每个连接建立的内存缓冲区,为网络传输服务,也要充当进程与网络间的缓冲桥梁。如果连接的内存配置过小,就无法充分使用网络带宽,TCP 传输速度就会很慢;如果连接的内存配置过大,那么服务器内存会很快用尽,新连接就无法建立成功。本文就对Linux TCP缓冲区的机制及调整方法进行分析。
滑动窗口是如何影响传输速度的?
我们知道TCP提供了可靠的传输,主要的机制就是在报文发出后,必须收到接收方返回的 ACK 确认报文,如果在RTO内还没收到,就会重新发送这个报文。由
1. tcp 收发缓冲区默认值
[root@qljt core]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 4161536
87380 :tcp接收缓冲区的默认值
[root@qljt core]# cat /proc/sys/net/ipv4/tcp_wmem
4096 16384 4161536
一、选项简单介绍
当使用setsockopt来设置TCP的接收缓冲区和发送缓冲区的大小时,系统都会将其值加倍,并且不得小于某个最小值。TCP接收缓冲区的最小值是256字节(不同系统会有不同的值),而发送缓冲区的最小值是2048字节(不同系统会有不同的值...