高并发web系统性能优化( 三 )


tcp_rmem:mindefaultmax
4096 87380 174760
32768 131072 16777216
接收缓存设置,同tcp_wmem
tcp_mem:mindefaultmax
根据内存计算
786432 1048576 1572864
low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存 。即低于此值没有内存压力 。(理想情况下,这个值应与指定给 tcp_wmem 的第 2 个值相匹配 - 这第 2 个值表明,最大页面大小乘以最大并发请求数除以页大小 (131072 * 300 / 4096) 。) pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态 。(理想情况下这 个值应该是 TCP 可以使用的总缓冲区大小的最大值 (204800 * 300 / 4096) 。) high:允许所有tcp sockets用于排队缓冲数据报的页面量 。(如果超过这个值,TCP 连接将被拒绝,这就是为什么不要令其过于保守 (512000 * 300 / 4096) 的原因了 。在这种情况下,提供的价值很大,它能处理很多连接,是所预期的 2.5 倍;或者使现有连接能够传输 2.5 倍的数据 。我的网络里为192000 300000 732000)、 一般情况下这些值是在系统启动时根据系统内存数量计算得到的 。
tcp_App_win
31
31
保留max(window/2^tcp_app_win, mss)数量的窗口由于应用缓冲 。当为0时表示不需要缓冲 。
tcp_adv_win_scale
2
2
计算缓冲开销bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale > 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale BOOLEAN>0)
tcp_low_latency
0
0
允许 TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项一般情形是的禁用 。(但在构建Beowulf 集群的时候,打开它很有帮助)
tcp_westwood
0
0
启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化;对于 WAN 通信来说应该启用这个选项 。
tcp_bic
0
0
为快速长距离网络启用 Binary Increase Congestion;这样可以更好地利用以 GB 速度进行操作的链接;对于 WAN 通信应该启用这个选项 。
ip_forward
0
-
NAT必须开启IP转发支持,把该值写1
ip_local_port_range:minmax
32768 61000
1024 65000
表示用于向外连接的端口范围,默认比较小,这个范围同样会间接用于NAT表规模 。
ip_conntrack_max
65535
65535
系统支持的最大ipv4连接数,默认65536(事实上这也是理论最大值),同时这个值和你的内存大小有关,如果内存128M,这个值最大8192,1G以上内存这个值都是默认65536
所处目录
/proc/sys/net/ipv4/netfilter/,文件需要打开防火墙才会存在
名称
默认值
建议值
描述
ip_conntrack_max
65536
65536
系统支持的最大ipv4连接数,默认65536(事实上这也是理论最大值),同时这个值和你的内存大小有关,如果内存128M,这个值最大8192,1G以上内存这个值都是默认65536,这个值受
/proc/sys/net/ipv4/ip_conntrack_max限制
ip_conntrack_tcp_timeout_established
432000
180
已建立的tcp连接的超时时间,默认432000,也就是5天 。影响:这个值过大将导致一些可能已经不用的连接常驻于内存中,占用大量链接资源,从而可能导致NAT ip_conntrack: table full的问题 。建议:对于NAT负载相对本机的 NAT表大小很紧张的时候,可能需要考虑缩小这个值,以尽早清除连接,保证有可用的连接资源;如果不紧张,不必修改
ip_conntrack_tcp_timeout_time_wait
120
120
time_wait状态超时时间,超过该时间就清除该连接
ip_conntrack_tcp_timeout_close_wait
60
60
close_wait状态超时时间,超过该时间就清除该连接
ip_conntrack_tcp_timeout_fin_wait
120
120
fin_wait状态超时时间,超过该时间就清除该连接
文件所处目录/proc/sys/net/core/
名称
默认值
建议值
描述
netdev_max_backlog
1024
16384
每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目,对重负载服务器而言,该值需要调高一点 。
somaxconn
128
16384
用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制 。web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而Nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值 。对繁忙的服务器,增加该值有助于网络性能


推荐阅读