TCP网络参数调优。

    要能够建立一个TCP连接,必须知道对方的IP和一个未被使用的端口号,由于32位操作系统的端口号通常由两个字节表示,也就是只有65535个,所以一台主机能够同时建立的连接数是有限的,当然操作系统还有一些0~1024是受保护的,如80端口、22端口,这些端口都不能被随意占用。
    在Linux中可以通过查看/proc/sys/net/ipv4/ip_local_port_range文件来知道当前这个主机可以使用的端口范围,如下图所示。


    上图表示可以使用的端口为61000-42768=18232。如果可以分配的端口号偏少,再遇到大量并发请求时就会成为瓶颈,由于端口有限导致大量请求等待建立链接,这样性能就会压不上去。另外如果发现有大量的TIME_WAIT的话,可以设置/proc/sys/net/ipv4/tcp_fin_timeout为更小的值来快速释放请求。我们通过另外一主机用 ab -c 30 -n 1000000 10.232.101.208:8080/ 来压测这台机器,看看网络的连接情况,如下图所示。


    可以看出TIME_WAIT的连接有26364个,我们设置sudu sh -c "echo 3 > /proc/sys/net/ipv4/tcp_fin_timeout"后再进行测试,如下图所示。
    
    调整后TIME_WAIT的数量明显减少,除了增大端口范围之外,还可以让TCP连接复用等,这些调优参数如下表所示。

网络参数说明
echo "1024 65535" >/proc/sys/net/ipv4/ip_local_port_range设置向外连接可用端口范围
echo 1 >/proc/sys/net/ipv4/tcp_tw_reuse设置time_wait连接重用
echo 1 >/proc/sys/net/ipv4/tcp_tw_recycle设置快速回收time_wait连接
echo 180000 >/proc/sys/net/ipv4/tcp_max_tw_buckets设置最大time_wait连接长度
echo 0 >/proc/sys/net/ipv4/tcp_timestamps表示是否启用以一种比超时重发更精确的方法来启用对RTT的计算
echo 1 >/proc/sys/net/ipv4/tcp_window_scaling设置TCP/IP会话的滑动窗口大小是否可变
echo 20000 >/proc/sys/net/ipv4/tcp_max_syn_backlog设置最大等待处于客户端还没有应答回来的连接数
echo 10000 >/proc/sys/net/core/somaxconn设置每一个处于监听状态的端口的监听队列的长度
echo 2000000 >/proc/sys/fs/file-max设置最大打开文件数
esho 15 >/proc/sys/net/ipv4/tcp_fin_timeout设置FIN-WAIT-2状态等待回收时间
esho 16777216 >/proc/sys/net/core/mem_max设置最大的系统套接字数据接收缓冲大小
esho 262144 >/proc/sys/net/core/mem_default设置默认的系统套接字数据接收缓冲大小
esho 16777216 >/proc/sys/net/core/wmen_max设置最大的系统套接字数据发送缓存大小
esho 262144 >/proc/sys/net/core/wmen_default设置默认的系统套接字数据发送缓冲大小
echo "4096 87380 16777216" >/proc/sys/net/ipv4/tcp_rmem设置最大的TCP数据发送缓冲大小,三个值分别是最小、默认和最大值
echo "4096 65536 16777216" >/proc/sys/net/ipv4/tcp_wmem设置默认的TCP数据接收缓冲大小,三个值分别是最小、默认和最大值

注意,以上设置都是临时性的,系统重新启动后会丢失。另外,Linux还提供了一些工具可用于查看当前的TCP统计信息,如下所示。

  • cat /proc/net/netstat:查看TCP的统计信息。
  • cat /proc/net/snmp:查看当前系统的连接情况。
  • netstat -s:查看网络的统计信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值