linux tcp sendbuffersize和receivebuffersize
在Linux中,TCP的发送和接收缓冲区大小可以通过多种方式进行查看修改。下面是如何查看和修改TCP缓冲区大小的步骤:
1. 查看TCP发送和接收缓冲区大小:
使用sysctl命令可以查看TCP发送和接收缓冲区的大小。
sysctl p_rmem
sysctl p_wmem
对于p_rmem,你将看到三个值,它们分别代表:
* min: 最小接收缓冲区大小
* default: 默认接收缓冲区大小
* max: 最大接收缓冲区大小对于p_wmem,你也将看到三个值,它们分别代表:
* min: 最小发送缓冲区大小
* default: 默认发送缓冲区大小
* max: 最大发送缓冲区大小
2. 修改TCP发送和接收缓冲区大小:
直接修改这些值是可以的,但为了使更改在重启后仍然生效,你需要在/f或/etc/sysctl.d/下的某个文件中添加或修改相应的行。例如:
在/f中添加或修改:
p_rmem = 4096 87380 163840
p_wmem = 4096 16384 49152
保存文件后,使用以下命令使更改生效:
sysctl -p
如果你使用的是systemd系统,可以创建一个systemd unit文件来在重启后自动应用这些更改。
3. 修改TCP参数持久化:
为了确保在系统重启后这些更改仍然有效,你可以创建一个systemd unit文件。例如,创建一个名为custom-tcp-buffer-settings.service的文件:
[Unit]
Description=Custom TCP buffer settings
After=network.target
[Service]
ExecStartPre=/sbin/sysctl -p /f
ExecStopPost=-/sbin/sysctl -p /f /f:/f$(date +%Y%m%d%H%M%S)
[Install]
大文件发送WantedBy=multi-user.target
保存文件后,运行以下命令使systemd unit生效:
sudo systemctl enable custom-tcp-buffer-settings.service  # 启用服务
sudo systemctl start custom-tcp-buffer-settings.service    # 启动服务(如果尚未启动)
这样,每次系统启动时,都会应用你在/f中指定的TCP缓冲区设置。同样地,每次系统关闭时,也会恢复原始的TCP缓冲区设置。