配置允许更大的缓冲区,可以有效降低包阻塞和重试,提升网络性能。适合内网服务这种有限连接数的网络连接使用,不建议用于对外服务。
vim /etc/sysctl.conf
配置最大读写缓冲区为25M
net.core.rmem_max = 26214400
net.core.rmem_default = 212992
net.core.wmem_max = 26214400
net.core.wmem_default = 212992
vm.dirty_writeback_centisecs=100
sudo sysctl -p
sudo sysctl vm.dirty_writeback_centisecs
程序中设置缓冲区
int buffer_size = 26214400; // 25 MB
socklen_t len = sizeof(buffer_size);
setsockopt(self.sockfd, SOL_SOCKET, SO_RCVBUF, &buffer_size, len);
int ret = getsockopt(self.sockfd, SOL_SOCKET, SO_RCVBUF, &buffer_size, &len);