您的当前位置:首页正文

/proc/sys/net/ipv4/*

来源:要发发知识网

本文主要写了网络相关内核参数,如TCP、IP等,以及如何通过修改相关内核参数来优化网络处理能力以提高系统性能。

man tcp

man ip

man icmp

注意:对于所有值为bool的参数,‘ture’或者非0整数都可表示为允许。0或者是'false'表示禁止

ip

  • /proc/sys/net/ipv4/ip_forward
    默认值:0
    功能:是否开启IP转发。值为0表示不开启,值不为0则表示开启(如设置为1)。

  • ip_default_ttl
    默认值:64
    功能:设定IP数据包的生存周期
    修改:增加该值会降低系统性能

  • ip_no_pmtu_disc
    默认值:0。表示关闭路径MTUD(path MTD discovery)

  • min_pmtu
    表示路径MTU(PMTU)的最小值。
    默认值:
    疑问:有的proc文件系统中不存在这个文件,我猜测是应该先开启 ip_no_pmtu_disc,但是我修改 ip_no_pmtu_disc值后也没用

  • inet_peer_gc_mintime
    每次碎片搜集之间的最小时间间隔

tcp

  • tcp_abc

  • tcp_abort_on_overflow

  • tcp_adv_win_scale

  • tcp_allowed_congestion_control

  • tcp_app_win

  • tcp_available_congestion_control

  • tcp_base_mss

  • tcp_challenge_ack_limit

  • tcp_congestion_control

  • tcp_dma_copybreak

  • tcp_dsack

  • tcp_ecn

  • tcp_fack

  • tcp_fin_timeout

  • tcp_frto

  • tcp_frto_response

  • tcp_limit_output_bytes

  • tcp_low_latency

  • tcp_max_orphans

  • tcp_max_ssthresh

  • tcp_max_syn_backlog

  • tcp_max_tw_buckets

  • tcp_mem

  • tcp_min_tso_segs

  • tcp_moderate_rcvbuf

  • tcp_mtu_probing

  • tcp_no_metrics_save

  • tcp_orphan_retries

  • tcp_reordering

  • tcp_retrans_collapse

  • tcp_retries1

  • tcp_retries2

  • tcp_rfc1337

  • tcp_sack

  • tcp_slow_start_after_idle

  • tcp_stdurg

  • tcp_syncookies

  • tcp_syn_retries
    默认值:5
    功能:对于一个新建的TCP连接(主动发起),内核要发送多少个SYN连接请求才决定放弃。这个值不应该超过255。默认值为5,对应180s
    修改:对于负载高但网络通信良好的情况而言,默认值偏高,可适当调低

  • tcp_synack_retries
    默认值:5(对应180s时间)。最大不超过255
    功能:对于一个接入的SYN请求,内核会发送SYN_ACK来确认,这就是著名的TCP三次握手的第二次握手。通过设定这个值,可以决定内核在放弃此次TCP连接之前而发送的SYN+ACK数目。
    修改:对于负载高但网络通信良好的情况而言,默认值偏高,可适当调低

  • tcp_keepalive_time
    默认值:7200(2小时)。单位-秒
    功能:对于一个保活的TCP连接,该值设定了TCP多长时间发送一次keepalive消息(简单来说就是心跳检测周期)

  • tcp_keepalive_probes
    默认值:9
    功能:在内核决定放弃该连接之前,发送多少个keepalive探测

  • tcp_keepalive_intvl **
    默认值:75
    功能:设定keepalive探测发送频率。对于发出的keepalive探测消息没有收到响应时,则根据这个intvl值设定的间隔再次发送。用这个intvl值
    probes值,得到的是发送探测共消耗的时间,默认是11分钟。9
    *75/60=11min。如果在这11分钟内还没有收到探测响应,则丢弃该TCP连接。
    修改:可以稍微设置小一点

  • tcp_thin_dupack

  • tcp_thin_linear_timeouts

  • tcp_timestamps

  • tcp_tso_win_divisor

  • tcp_tw_recycle
    默认值(bool):0
    功能:表示是否开启TIME_WAIT sockets的快速回收,设置为1 时表示开启

  • tcp_tw_reuse
    默认值(bool):0
    功能:是否允许TIME_WAIT sockets 的重新用于新的TCP连接

  • tcp_window_scaling
    默认值(bool):1
    功能:该文件值表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,非0整数时表示可变,为0时表示不可变

  • tcp_wmem
    默认值(三个整数):4096 16384 131072。三个值分别表示min default max。
    其中:
    1.min值表示内核为TCP SOCKET设置的最小发送缓冲区大小。
    2.default值表示内核为TCP SOCKET为设置的默认发送缓冲区大小。如果期望大的发送缓冲区,应该增加这个值(以影响所有套接字)。注意,如果要是要大的发送缓冲区,/proc/sys/net/ipv4/tcp_window_scaling中的值必须是一个非0值
    3.max值表示内核为TCP SOCKET设置的最大发送缓冲区大小,这个值不会覆盖/proc/sys/net/core/wmem_max中的值
    功能:控制TCP发送缓冲区大小。TCP根据可用内存,从读取文件中的默认值,然后在这些值的范围内动态调整发送缓冲区的大小。

  • tcp_rmem
    默认值:min default max。解释类似tcp_wmem
    功能:控制TCP接收缓冲区大小

  • tcp_workaround_signed_windows

高并发Nginx服务器优化

tcp_syncookies 1 表示开启SYN cookies;当SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
tcp_tw_reuse 1 表示开启重用;允许将TAME_WAIT sockets 重新用于新的TCP连接
tcp_tw_recycle 1 表示开启快速回收;TCP连接中的 TAME_WAIT sockets 快速回收
tcp_max_syn_backlog 8192 表示SYN队列的长度,加大队列长度,可以容纳更多等待连接的网络数
tcp_keepalive_time 默认2小时。连接的心跳检测。可以调小一点。这样可以更快的清理无效连接
tcp_fin_timeout FIN_WAIT2 状态持续时间;表示如果套接字由本端要求关闭,

建议优化

echo "1" >/proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/tcp_synack_retries
echo "1" > /proc/sys/net/ipv4/tcp_syn_retries
echo "4096000">  /proc/sys/net/ipv4/route/max_size
echo "8192" > /proc/sys/net/core/somaxconn
echo "2621400" > /proc/sys/net/netfilter/nf_conntrack_max
echo "600" > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
echo "1048576" > /sys/module/nf_conntrack/parameters/hashsize
echo "1024 65534" > /proc/sys/net/ipv4/ip_local_port_range