我正在尝试通过“具有大量连接和小数据包流量的千兆网络”来提高TCP吞吐量.我的服务器操作系统是Ubuntu 11.10 Server 64bit.
有大约50.000(和不断增长的)客户端通过TCP套接字连接到我的服务器(所有客户端都在同一个端口上).
95%的数据包大小为1-150字节(TCP标头和有效负载).其余5%从150到4096字节不等.
使用下面的配置,我的服务器可以处理高达30 Mbps(全双工)的流量.
您能否根据我的需求建议最佳实践来调整操作系统?
我的/etc/sysctl.cong看起来像这样:
kernel.pid_max = 1000000
net.ipv4.ip_local_port_range = 2500 65000
fs.file-max = 1000000
#
net.core.netdev_max_backlog=3000
net.ipv4.tcp_sack=0
#
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 2048
#
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
#
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_mem = 50576 64768 98152
#
net.core.wmem_default = 65536
net.core.rmem_default = 65536
net.ipv4.tcp_window_scaling=1
#
net.ipv4.tcp_mem= 98304 131072 196608
#
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_forward