热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[转帖]/proc/sys/net/ipv4/下参数理解

procsysnetipv4下参数理解,方便服务器优化2017年06月02日16:52:27庞叶蒙阅读数3065https:blog.csdn.netpangyeme

/proc/sys/net/ipv4/ 下参数理解,方便服务器优化

/proc/sys/net/ipv4/下文件:

1)  /proc/sys/net/ipv4/ip_forward
该文件表示是否打开IP转发。
0,禁止
1,转发
基本用途:如VPN、路由产品的利用;

原理图:


缺省设置:0
2)  /proc/sys/net/ipv4/ip_default_ttl

该文件表示一个数据报的生存周期(Time To Live),即最多经过多少路由器。 
缺省设置:64 

增加该值会降低系统性能。 

 

3)      /proc/sys/net/ipv4/ip_no_pmtu_disc 
该文件表示在全局范围内关闭路径MTU探测功能。 

关闭路径MTU探测(典型的瓶颈原理,一次成功的传输中,mtu是由网络上最"窄"的位置决定的.如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据报分成若干片,这样每一片都小于MTU。
几种常见网络的MTU值:  
超通道        6553516Mb/ s
令牌网(IBM)   179144Mb/ s
令牌网(IEEE 802.5) 4464
FDDI          4352 
以太网        1500
IEEE 802.3/802.2     1492
X.25          576
点对点(低延时)     296
缺省设置:0 


4) /proc/sys/net/ipv4/route/min_pmtu 
该文件表示最小路径MTU的大小。 

产品实践中,主要两个网卡MTU的设置;

缺省设置:552 

5) /proc/sys/net/ipv4/route/mtu_expires 
该文件表示PMTU信息缓存多长时间(秒)。 
缺省设置:600(秒) 


6) /proc/sys/net/ipv4/route/min_adv_mss 
该文件表示最小的MSS(Maximum Segment Size)大小,取决于第一跳的路由器MTU。 
缺省设置:256(bytes)

 
6.1 IP Fragmentation 
1) /proc/sys/net/ipv4/ipfrag_low_thresh 
/proc/sys/net/ipv4/ipfrag_low_thresh 
两个文件分别表示用于重组IP分段的内存分配最低值和最高值,一旦达到最高内存分配值,其它分段将被丢弃,直到达到最低内存分配值。 
缺省设置:196608(ipfrag_low_thresh) 
262144(ipfrag_high_thresh) 

2) /proc/sys/net/ipv4/ipfrag_time 
该文件表示一个IP分段在内存中保留多少秒。 
缺省设置:30(秒) 


6.2 INET Peer Storage 
1) /proc/sys/net/ipv4/inet_peer_threshold 
INET对端存储器某个合适值,当超过该阀值条目将被丢弃。该阀值同样决定生存 
时间以及废物收集通过的时间间隔。条目越多,存活期越低,GC 间隔越短。 
缺省设置:65664 

2) /proc/sys/net/ipv4/inet_peer_minttl 
条目的最低存活期。在重组端必须要有足够的碎片(fragment)存活期。这个最低 
存活期必须保证缓冲池容积是否少于 inet_peer_threshold。该值以 jiffies为 
单位测量。 
缺省设置:120 

3) /proc/sys/net/ipv4/inet_peer_maxttl 
条目的最大存活期。在此期限到达之后,如果缓冲池没有耗尽压力的话(例如:缓 
冲池中的条目数目非常少),不使用的条目将会超时。该值以 jiffies为单位测量。 
缺省设置:600 

4) /proc/sys/net/ipv4/inet_peer_gc_mintime 
废物收集(GC)通过的最短间隔。这个间隔会影响到缓冲池中内存的高压力。该值 
以 jiffies为单位测量。 
缺省设置:10 

5) /proc/sys/net/ipv4/inet_peer_gc_maxtime 
废物收集(GC)通过的最大间隔,这个间隔会影响到缓冲池中内存的低压力。该值 
以 jiffies为单位测量。 
缺省设置:120 


6.3 TCP Variables 
1) /proc/sys/net/ipv4/tcp_syn_retries 
该文件表示本机向外发起TCP SYN连接超时重传的次数,不应该高于255;该值仅仅针对外出的连接,对于进来的连接由tcp_retries1控制。 
缺省设置:5 


2)/proc/sys/net/ipv4/tcp_keepalive_probes 
该文件表示丢弃TCP连接前,进行最大TCP保持连接侦测的次数。保持连接仅在 
SO_KEEPALIVE套接字选项被打开时才被发送。 
缺省设置:9(次) 


3)/proc/sys/net/ipv4/tcp_keepalive_time 
该文件表示从不再传送数据到向连接上发送保持连接信号之间所需的秒数。 
  缺省设置:7200(2小时) 


4)  /proc/sys/net/ipv4/tcp_keepalive_intvl 
该文件表示发送TCP探测的频率,乘以tcp_keepalive_probes表示断开没有相应的TCP连接的时间。 
缺省设置:75(秒) 


5) /proc/sys/net/ipv4/tcp_retries1 
该文件表示放弃回应一个TCP连接请求前进行重传的次数。 
缺省设置:3 


6) /proc/sys/net/ipv4/tcp_retries2 
该文件表示放弃在已经建立通讯状态下的一个TCP数据包前进行重传的次数。 
缺省设置:15 


7)/proc/sys/net/ipv4/tcp_orphan_retries 
在近端丢弃TCP连接之前,要进行多少次重试。默认值是 7 个,相当于 50秒– 
16分钟,视 RTO 而定。如果您的系统是负载很大的web服务器,那么也许需 
要降低该值,这类 sockets 可能会耗费大量的资源。另外参考 
tcp_max_orphans。 


8) /proc/sys/net/ipv4/tcp_fin_timeout 
对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能 
会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60 秒。过去在 
2.2版本的内核中是 180 秒。您可以设置该值,但需要注意,如果您的机器为负 
载很重的web服务器,您可能要冒内存被大量无效数据报填满的风险, 
FIN-WAIT-2 sockets 的危险性低于 FIN-WAIT-1,因为它们最多只吃 1.5K 
的内存,但是它们存在时间更长。另外参考 tcp_max_orphans。 
缺省设置:60(秒) 


9) /proc/sys/net/ipv4/tcp_max_tw_buckets 
系统在同时所处理的最大timewait sockets 数目。如果超过此数的话, 
time-wait socket 会被立即砍除并且显示警告信息。之所以要设定这个限制,纯 
粹为了抵御那些简单的 DoS 攻击,千万不要人为的降低这个限制,不过,如果 
网络条件需要比默认值更多,则可以提高它(或许还要增加内存)。 
  缺省设置:180000 


10) /proc/sys/net/ipv4/tcp_tw_recyle 
打开快速 TIME-WAIT sockets 回收。除非得到技术专家的建议或要求, 请不要随 
意修改这个值。 
缺省设置:0 


11) /proc/sys/net/ipv4/tcp_tw_reuse 
该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。 
缺省设置:0 


12) /proc/sys/net/ipv4/tcp_max_orphans 
系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那 
么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这 
个限制,纯粹为了抵御那些简单的 DoS 攻击,千万不要依赖这个或是人为的降 
低这个限制。 
缺省设置:8192 


13) /proc/sys/net/ipv4/tcp_abort_on_overflow 
当守护进程太忙而不能接受新的连接,就向对方发送reset消息,默认值是false。 
这意味着当溢出的原因是因为一个偶然的猝发,那么连接将恢复状态。只有在你确 
信守护进程真的不能完成连接请求时才打开该选项,该选项会影响客户的使用。 
缺省设置:0 

半链接队列和全链接队列问题;


14) /proc/sys/net/ipv4/tcp_synCOOKIEs 
该文件表示是否打开TCP同步标签(synCOOKIE),内核必须打开了 CONFIG_SYN_COOKIES项进行编译。同步标签(synCOOKIE)可以防止一个套接字在有过多试图连接到达时引起过载。 
缺省设置:0 


15) /proc/sys/net/ipv4/tcp_stdurg 
使用 TCP urg pointer 字段中的主机请求解释功能。大部份的主机都使用老旧的 
BSD解释,因此如果您在 Linux 打开它,或会导致不能和它们正确沟通。 
缺省设置:0 


16) /proc/sys/net/ipv4/tcp_max_syn_backlog 
对于那些依然还未获得客户端确认的连接请求,需要保存在队列中最大数目。对于 
超过 128Mb 内存的系统,默认值是 1024,低于 128Mb 的则为 128。如果 
服务器经常出现过载,可以尝试增加这个数字。警告!假如您将此值设为大于 
1024,最好修改 include/net/tcp.h 里面的 TCP_SYNQ_HSIZE,以保持 
TCP_SYNQ_HSIZE*16 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如 
果tcp_adv_win_scale 128Mb 32768-610000)则系统将忽略所有发送给自己 
的ICMP ECHO请求或那些广播地址的请求。 
缺省设置:1024 


17) /proc/sys/net/ipv4/tcp_window_scaling 
该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到 65535 字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力。 
缺省设置:1 


18) /proc/sys/net/ipv4/tcp_sack 
该文件表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。 
缺省设置:1 


19) /proc/sys/net/ipv4/tcp_timestamps 
该文件表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。 
缺省设置:1 


20) /proc/sys/net/ipv4/tcp_fack 
该文件表示是否打开FACK拥塞避免和快速重传功能。 
缺省设置:1 


21) /proc/sys/net/ipv4/tcp_dsack 
该文件表示是否允许TCP发送“两个完全相同”的SACK。 
缺省设置:1 


22) /proc/sys/net/ipv4/tcp_ecn 
该文件表示是否打开TCP的直接拥塞通告功能。 
缺省设置:0 


23) /proc/sys/net/ipv4/tcp_reordering 
该文件表示TCP流中重排序的数据报最大数量。 
缺省设置:3

 
24) /proc/sys/net/ipv4/tcp_retrans_collapse 
该文件表示对于某些有bug的打印机是否提供针对其bug的兼容性。 
缺省设置:1 


25) /proc/sys/net/ipv4/tcp_wmem 
该文件包含3个整数值,分别是:min,default,max 
Min:为TCP socket预留用于发送缓冲的内存最小值。每个TCP socket都可以使用它。 
Default:为TCP socket预留用于发送缓冲的内存数量,默认情况下该值会影响其它协议使用的net.core.wmem中default的 值,一般要低于net.core.wmem中default的值。 
Max:为TCP socket预留用于发送缓冲的内存最大值。该值不会影响net.core.wmem_max,今天选择参数SO_SNDBUF则不受该值影响。默认值为128K。 
缺省设置:4096 16384 131072 


26) /proc/sys/net/ipv4/tcp_rmem 
该文件包含3个整数值,分别是:min,default,max 
Min:为TCP socket预留用于接收缓冲的内存数量,即使在内存出现紧张情况下TCP socket都至少会有这么多数量的内存用于接收缓冲。 
Default:为TCP socket预留用于接收缓冲的内存数量,默认情况下该值影响其它协议使用的 net.core.wmem中default的 值。该值决定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win的默认值情况下,TCP 窗口大小为65535。 
Max:为TCP socket预留用于接收缓冲的内存最大值。该值不会影响 net.core.wmem中max的值,今天选择参数 SO_SNDBUF则不受该值影响。 
缺省设置:4096 87380 174760 


27) /proc/sys/net/ipv4/tcp_mem 
该文件包含3个整数值,分别是:low,pressure,high 
Low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。 
Pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。 
High:允许所有tcp sockets用于排队缓冲数据报的页面量。 
一般情况下这些值是在系统启动时根据系统内存数量计算得到的。 
缺省设置:24576 32768 49152 


28) /proc/sys/net/ipv4/tcp_app_win 
该文件表示保留max(window/2^tcp_app_win, mss)数量的窗口由于应用缓冲。当为0时表示不需要缓冲。 
 缺省设置:31 


29) /proc/sys/net/ipv4/tcp_adv_win_scale 
该文件表示计算缓冲开销bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale >; 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale )。 
缺省设置:2 


6.4 IP Variables 
1) /proc/sys/net/ipv4/ip_local_port_range 
该文件表示TCP/UDP协议打开的本地端口号。 
缺省设置:1024 4999 
建议设置:32768 61000 


2)/proc/sys/net/ipv4/ip_nonlocal_bind 
该文件表示是否允许进程邦定到非本地地址。 
 缺省设置:0 


3) /proc/sys/net/ipv4/ip_dynaddr 
该参数通常用于使用拨号连接的情况,可以使系统动能够立即改变ip包的源地址为该ip地址,同时中断原有的tcp对话而用新地址重新发出一个syn请求 包,开始新的tcp对话。在使用ip欺骗时,该参数可以立即改变伪装地址为新的ip地址。该文件表示是否允许动态地址,如果该值非0,表示允许;如果该值 大于1,内核将通过log记录动态地址重写信息。 
缺省设置:0 


4) /proc/sys/net/ipv4/icmp_echo_ignore_all 
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 
该文件表示内核是否忽略所有的ICMP ECHO请求,或忽略广播和多播请求。 
0,响应请求 
1,忽略请求 
  
缺省设置:0 
建议设置:1 


5)/proc/sys/net/ipv4/icmp_ratelimit 
6) /proc/sys/net/ipv4/icmp_ratemask 
7) /proc/sys/net/ipv4/icmp_ignore_bogus_error_reponses 
某些路由器违背RFC1122标准,其对广播帧发送伪造的响应来应答。这种违背行 
为通常会被以告警的方式记录在系统日志中。如果该选项设置为True,内核不会 
记录这种警告信息。 
缺省设置:0 


8) /proc/sys/net/ipv4/igmp_max_memberships 
该文件表示多播组中的最大成员数量。 
缺省设置:20 


6.5 Other Configuration 
1) /proc/sys/net/ipv4/conf/*/accept_redirects 
如果主机所在的网段中有两个路由器,你将其中一个设置成了缺省网关,但是该网关 
在收到你的ip包时发现该ip包必须经过另外一个路由器,这时这个路由器就会给你 
发一个所谓的“重定向”icmp包,告诉将ip包转发到另外一个路由器。参数值为布尔 
值,1表示接收这类重定向icmp 信息,0表示忽略。在充当路由器的linux主机上缺 
省值为0,在一般的linux主机上缺省值为1。建议将其改为0以消除安全性隐患。 

2)/proc/sys/net/ipv4/*/accept_source_route 
是否接受含有源路由信息的ip包。参数值为布尔值,1表示接受,0表示不接受。在 
充当网关的linux主机上缺省值为1,在一般的linux主机上缺省值为0。从安全性角 
度出发,建议关闭该功能。 


3)/proc/sys/net/ipv4/*/secure_redirects 

其实所谓的“安全重定向”就是只接受来自网关的“重定向”icmp包。该参数就是 
用来设置“安全重定向”功能的。参数值为布尔值,1表示启用,0表示禁止,缺省值 
为启用。 


4) /proc/sys/net/ipv4/*/proxy_arp 
设置是否对网络上的arp包进行中继。参数值为布尔值,1表示中继,0表示忽略, 
缺省值为0。该参数通常只对充当路由器的linux主机有用。


转载于:https://www.cnblogs.com/jinanxiaolaohu/p/11049825.html


推荐阅读
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 双指针法在链表问题中应用广泛,能够高效解决多种经典问题,如合并两个有序链表、合并多个有序链表、查找倒数第k个节点等。本文将详细介绍这些应用场景及其解决方案。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
author-avatar
Jerl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有