1. 程式人生 > >centos7更改系統udp緩衝區大小

centos7更改系統udp緩衝區大小

udp對收發緩衝區的大小比較敏感:

udp緩衝區的大小主要和以下幾個值有關:

  1. /proc/sys/net/core/rmem_max ——— udp緩衝區的最大值,單位位元組,下同
  2. /proc/sys/net/core/rmem_default ——— udp緩衝區的預設值,如果不更改的話程式的udp緩衝區預設值就是這個。
檢視方法: [[email protected] route]# sysctl -a | grep rmem_max一·系統udp緩衝區大小修改

1)程式中進行更改

程式中可以使用setsockopt函式與SO_RCVBUF選項對udp緩衝區的值進行更改,但是要注意不管設定的值有多大,超過rmem_max的部分都會被無視。

int a = value_wanted;
if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &a,sizeof(int)) == - 1 ) {
...

}

2)更改系統值

如果確實要把udp緩衝區改到一個比較大的值,那就需要更改rmem_max的值。

編輯/etc/rc.local檔案新增以下程式碼可使系統在每次啟動的時候自動更改系統緩衝區的最大值。

[[email protected] route]# echo value_wanted > / proc /sys/net/core/rmem_default

或者在/etc/sysctl.conf新增以下程式碼即可在重啟後永久生效。

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216