sysctl.conf 中文参数指南

QQ截图20160109154638.png

dev.scsi.logging_level = 0

参数设置作业类跟踪多少日志数据。

dev.raid.speed_limit_max = 200000

RAID1,RAID5,RAID6需要初始化同步RAID的同步最大速度限制。

dev.raid.speed_limit_min = 1000

RAID1,RAID5,RAID6需要初始化同步RAID的同步最小速度限制。

dev.cdrom.check_media = 0

dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17

dev.cdrom.info = drive name:             hda

dev.cdrom.info = drive speed:             24

dev.cdrom.info = drive # of slots: 1

dev.cdrom.info = Can close tray:        1

dev.cdrom.info = Can open tray:        1

dev.cdrom.info = Can lock tray:         1

dev.cdrom.info = Can change speed: 1

dev.cdrom.info = Can select disk:       0

dev.cdrom.info = Can read multisession:  1

dev.cdrom.info = Can read MCN:            1

dev.cdrom.info = Reports media changed:      1

dev.cdrom.info = Can play audio:             1

dev.cdrom.info = Can write CD-R:           0

dev.cdrom.info = Can write CD-RW:       0

dev.cdrom.info = Can read DVD:             1

dev.cdrom.info = Can write DVD-R: 0

dev.cdrom.info = Can write DVD-RAM: 0

dev.cdrom.info = Can read MRW:            1

dev.cdrom.info = Can write MRW:           1

dev.cdrom.info = Can write RAM:           1

以上为相应的设备名称。

dev.rtc.max-user-freq = 64

设置用户时钟的最大频率。建议将其添加到系统启动脚本。

debug.exception-trace = 1

这个文件可以开启和关闭segfault 默认开启

net.unix.max_dgram_qlen = 10

max_dgram-qlen限制了多少数据可以按队列在unix域套接字(SOCK_DGRAM)接收缓冲区,如果发件人尝试传送更多的数据或返回错误。默认值为10

net.token-ring.rif_timeout = 600000

默认请求超时10分钟配置完成。

net.ipv4.conf.eth0. disable_policy = 0  net.ipv4.conf.lo.disable_policy = 0

net.ipv4.conf.default.disable_policy = 0 net.ipv4.conf.all.disable_policy = 0

禁用IPSEC策略(spd)在这个接口。

net.ipv4.conf.eth0.arp_ignore = 0 net.ipv4.conf.lo.arp_ignore = 0

net.ipv4.conf.default.arp_ignore = 0 net.ipv4.conf.all.arp_ignore = 0

确定不同的方式发送的回应收到ARP协议要求,解决本地的目标IP地址:

0-(默认)代表任何地方的目标IP地址,配置任何接口。

1-答复只有目标IP地址是本地地址上配置传入接口。

2-回复只有当目标IP地址是本地地址上配置传入接口的两个与发件人的IP地址是来自同一个子网这个界面。

3-不要回复对于本地地址配置host范围,为全球唯一的决议和链接地址的答复。

4-7-保留。

8-不回复所有本地地址。

net.ipv4.conf.eth0.tag = 0 net.ipv4.conf.lo.tag = 0

net.ipv4.conf.default.tag = 0 net.ipv4.conf.all.tag = 0

允许写一些,它可以被用来作为必须的,默认值为0

net.ipv4.conf.eth0.medium_id = 0 net.ipv4.conf.lo.medium_id = 0

net.ipv4.conf.default.medium_id = 0 net.ipv4.conf.all.medium_id = 0

整数值用来区分不同的设备这种方法我们十分喜爱。两个设备可有不同的ID值的广播数据包是,只收到其中的一个。默认值是0,表示该设备是唯一的接口,值为-1表示不知道。

目前,它是由你用来改变proxy_arp行为。Proxy_arp功能是用来数据包在两个不同的设备间互相转发后连接到不同的媒体上。

net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.lo.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 0

1 通过反向路由回溯进行源地址验证(在RFC1812中定义)。对于单一主机和stub网络路由器推荐使用该选项。

0 不通过反向路由回溯进行源地址验证。缺省值为0

net.ipv4.conf.lo.force_igmp_version = 0 net.ipv4.conf.default.force_igmp_version = 0

net.ipv4.conf.all.force_igmp_version = 0 net.ipv4.conf.eth0.force_igmp_version = 0

IGMP组播协议版本

net.ipv4.conf.lo.accept_redirects = 1 net.ipv4.conf.eth0.accept_redirects = 1

net.ipv4.conf.default.accept_redirects = 1 net.ipv4.conf.all.accept_redirects = 1

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

net.ipv4.conf.default.disable_xfrm = 0 net.ipv4.conf.all.disable_xfrm = 0

net.ipv4.conf.eth0.disable_xfrm = 0 net.ipv4.conf.lo.disable_xfrm = 0

无论什么策略,禁用IPsec加密这个接口上。

net.ipv4.conf.default.arp_announce = 0 net.ipv4.conf.all.arp_announce = 0

net.ipv4.conf.eth0.arp_announce = 0 net.ipv4.conf.lo.arp_announce = 0

定义不同程序的限制,宣布本地IP地址和IP数据包中的ARP协议要求发出的接口:

0-(默认)使用任何本地地址,上配置任何接口。

1- 尽量避免本地地址不属于目标的子网掩码这个接口的,这种模式是有用的当地到达目标主机需要通过这个接口的源IP地址的ARP协议要求的一部分,其逻辑网络上配置接受接口,当我们出现需求,我们将检查所有的子网,包括我们的目标将维持原地址,如果没有这样的子网,我们根据地址规则选择2.

2-始终使用当地最好的解决这一目标。在这种模式下,我们忽视了源地址的IP数据包,并尝试选择本地地址的,我们希望会谈的目标主机。这些地方是选中的地址寻找小学的所有IP地址的子网的接口,其中包括即将离任的目标IP地址。如果没有合适的本地地址是发现我们选择第一个本地地址,我们对即将离任的接口或其他所有的接口,希望我们将得到答复我们的要求,有时甚至不管源IP地址,我们宣布

net.ipv4.conf.default.arp_filter = 0 net.ipv4.conf.all.arp_filter = 0

net.ipv4.conf.eth0.arp_filter = 0 net.ipv4.conf.lo.arp_filter = 0

0-(默认)内核能响应ARP协议请求地址从其他接口,这看上去可能是错的但是它通常是有意义的,,因为它增加了成功的机会沟通,IP地址所拥有的完整的主机在linux上,而不是由特定的接口。只为更负载的设置相似的负载均衡,这样的行为会的导致问题。

1-你可以拥有多个网络接口在同一个子网上,并有ARPs为每个接口的基础上回答与否路线的核心将一包的IP从ARP’d说接口(因此,您必须使用来源路由这一工作)。换句话说,它可以控制的卡(通常是1)将响应一个ARP请求。

net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.lo.proxy_arp = 0

net.ipv4.conf.all.proxy_arp = 0  net.ipv4.conf.eth0.proxy_arp = 0

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

net.ipv4.conf.default.forwarding = 0 net.ipv4.conf.eth0.forwarding = 0

net.ipv4.conf.all.forwarding = 0 net.ipv4.conf.lo.forwarding = 0    

在该接口打开转发功能。

net.ipv4.conf.all.log_martians = 0 net.ipv4.conf.eth0.log_martians = 0

net.ipv4.conf.lo.log_martians = 0 net.ipv4.conf.default.log_martians = 0

记录带有不允许的地址的数据报到内核日志中。

net.ipv4.conf.all.bootp_relay = 0 net.ipv4.conf.eth0.bootp_relay = 0

net.ipv4.conf.lo.bootp_relay = 0 net.ipv4.conf.default.bootp_relay = 0 

接收源地址0.b.c.d,目的地址不是本机的数据报。用来支持BOOTP转发服务进程,该进程将捕获并转发该包。默认是false,目前还没有实现。

net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0

net.ipv4.conf.eth0.accept_source_route = 0 net.ipv4.conf.lo.accept_source_route = 0

接收带有SRR选项的数据报。对于主机来说默认是false,对于用作路由器时默认值为true。

net.ipv4.conf.all.send_redirects = 1 net.ipv4.conf.eth0.send_redirects = 1

net.ipv4.conf.lo.send_redirects = 1 net.ipv4.conf.default.send_redirects = 1

如果是router,发送重定向消息,默认是true。

net.ipv4.conf.all.shared_media = 1 net.ipv4.conf.eth0.shared_media = 1

net.ipv4.conf.lo.shared_media = 1 net.ipv4.conf.default.shared_media = 1

发送(路由器)或接收(主机)RFC1620共享媒体重定向,覆盖ip_secure_redirects的值。默认为true。

net.ipv4.conf.eth0.secure_redirects = 1 net.ipv4.conf.default.secure_redirects = 1

net.ipv4.conf.all.secure_redirects = 1  net.ipv4.conf.lo.secure_redirects = 1

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

net.ipv4.conf.all.mc_forwarding = 0 net.ipv4.conf.eth0.mc_forwarding = 0

net.ipv4.conf.lo.mc_forwarding = 0 net.ipv4.conf.default.mc_forwarding = 0

是否进行多播路由。只有内核编译有config_mroute并且有路由服务程式在运行该参数才有效。

net.ipv4.neigh.default.gc_thresh3 = 1024

保存在ARP高速缓存中的最多纪录的硬限制,一旦高速缓存中的数目高于此垃圾收集器将马上进行。缺省值为1024

net.ipv4.neigh.default.gc_thresh2 = 512

保存在ARP高速缓存中的最多记录软限制,垃圾收集器在开始收集前,允许记录数超过这个数字5秒。缺省值5121

net.ipv4.neigh.default.gc_thresh1 = 128

存在于ARP高速缓存中的最少层数。如果少于这个数,垃圾收集器将不会运行,缺省值是128。

net.ipv4.neigh.default.gc_interval = 30

收集相邻层记录的无用记录的垃圾收集程序的运行周期,缺省值30秒。

net.ipv4.neigh.default.locktime = 99 net.ipv4.neigh.eth0.locktime = 99

net.ipv4.neigh.lo.locktime = 99

 

 

ARP记录保存在高速缓存内的最短实际那(jiffy数),以防止存在多个可能映射(potential mapping)时,ARP高速缓存系统的颠簸(经常是由于网络的错误配置而引起)。缺省值是1秒。

net.ipv4.neigh.default.proxy_delay = 79 net.ipv4.neigh.eth0.proxy_delay = 79

net.ipv4.neigh.lo.proxy_delay = 79

当接收到有一个请求已知的代理ARP地址的ARP请求时,在回应前可以延迟的jiffy(时间单位)数目。这样以防止网络风暴。缺省值(0.8秒)

net.ipv4.neigh.default.anycast_delay = 99 net.ipv4.neigh.eth0.anycast_delay = 99

net.ipv4.neigh.lo.anycast_delay = 99

对IPV4相邻信息的回复的最大延迟时间。目前还不支持anycast。缺省值为99秒。

net.ipv4.neigh.default.proxy_qlen = 64 net.ipv4.neigh.eth0.proxy_qlen = 64

net.ipv4.neigh.lo.proxy_qlen = 64

能放入代理ARP地址队列(proxy-ARP addresses)的数据包最大数目。缺省值64。

net.ipv4.neigh.default.unres_qlen = 3 net.ipv4.neigh.eth0.unres_qlen = 3

net.ipv4.neigh.lo.unres_qlen = 3

每个没有被其它网络层解析的地址,在队列中可存放包的最大数目。缺省值3。

net.ipv4.neigh.default.gc_stale_time = 60 net.ipv4.neigh.eth0.gc_stale_time = 60

net.ipv4.neigh.lo.gc_stale_time = 60

决定检查一次相邻记录的有效性的周期。当相邻层记录失效时,将在给它发送数据前。再解析一次。缺省值是60秒。

net.ipv4.neigh.default.delay_first_probe_time = 5

net.ipv4.neigh.eth0.delay_first_probe_time =5 net.ipv4.neigh.lo.delay_first_probe_time = 5

发现某个相邻记录无效(stable)后,发出第一个探测要等待的时间,缺省为5秒。

net.ipv4.neigh.default.base_reachable_time = 30 net.ipv4.neigh.eth0.base_reachable_time = 30

net.ipv4.neigh.lo.base_reachable_time = 30

一旦发现相邻记录,至少在一段介于base_reachable_time/2和3*base_reacheable_time/2之间的随机时间内,该记录是有效的。如果收到上层协议的肯定反馈,那么记录的有效期将延长。缺省值30秒。

net.ipv4.neigh.default.retrans_time = 99 net.ipv4.neigh.eth0.retrans_time = 99

net.ipv4.neigh.lo.retrans_time = 99

重发一个请求前的等待jiffy(时间单位)的数目。缺省值是1秒。

net.ipv4.neigh.default.app_solicit = 0 net.ipv4.neigh.eth0.app_solicit = 0

net.ipv4.neigh.lo.app_solicit = 0

这是在使用多路广播探测(multicast probe)前,经过网络连接送到用户间隙ARP端口监控程序的探测(probe)最大数目。缺省值0。

net.ipv4.neigh.default.ucast_solicit = 3 net.ipv4.neigh.eth0.ucast_solicit = 3

net.ipv4.neigh.lo.ucast_solicit = 3

询问ARP端口监控程序前,试图发送单探测(unicast probe)的次数。缺省值是3秒

net.ipv4.neigh.default.mcast_solicit = 3 net.ipv4.neigh.eth0.mcast_solicit = 3

net.ipv4.neigh.lo.mcast_solicit = 3

在把记录标记为不可抵达之前。用多路广播/广播(multicast/broadcast)方式解析地址的最大次数。

net.ipv4.tcp_bic = 1

默认值为0,为快速长距离网络启用binary increase congestion,这样可以更好的利用以GB速度进行操作的链接。

net.ipv4.tcp_westwood = 0

默认值为0,启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化。对于WAN通讯来说应该启用这个选项。

net.ipv4.tcp_no_metrics_save = 0

不缓存ssthresh链接。默认关闭。

net.ipv4.ipfrag_secret_interval = 600

net.ipv4.tcp_low_latency = 0

默认值是0,允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项一般是禁用的。

net.ipv4.tcp_tw_reuse = 1

默认值是0,该文件表示师傅允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接(这个对快速重启动某些服务,而启动后提示端口已经被使用的情形非常有帮助)

net.ipv4.icmp_ratemask = 6168 net.ipv4.icmp_ratelimit = 1000

某些路由器违背RFC1122标准。其对广播帧发送伪造的响应来应答。这种违背行为通常会被以警告的方式记录在系统日志中。如果该选项设置为true,内核不会记录这种警告信息。

 

net.ipv4.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)

net.ipv4.tcp_app_win = 31

默认值为31,保留max(window/2^tcp_app_win,mss)数量的窗口由于应用缓冲。当为0时表示不需要缓冲。

net.ipv4.tcp_rmem = 4096     87380    174760

这选项有三个NETEGER变量:min,default,max。

min:为TCP socket预留用于接收缓冲的内存数量,即时内存出现紧张情况下TCP socket都至少会有这么多数量的内存用于接收缓冲。默认值为8K。

Default:为TCP socket预留用于接收缓冲的内存数量,默认情况下该值影响其他协议使用的net.core.wmem_default值。该值决定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win=0默认情况下,TCP窗口大小为65535,默认值为87380。

Max:用于TCP socket接收缓冲的内存最大值。该值不会影响net.core.wmem_max,“静态”选择参数SO_SNDBUF则不受该值影响,默认值为128K。默认值为87380*2bytes.一般来说max的值为default的两倍。

 

net.ipv4.tcp_wmem = 4096    16384    131072

这个选项有三个INTEGER变量:min,default,max

Min:为TCP socket预留用于发送缓冲内存最小值。每个tcp socket都可以在建议以后都可以使用它。默认值为4096(4K)

Default:为TCP_default值,一般低于net.core_wmem_default的值。默认值为16384(16K)。

Max:用于TCP socket发送缓冲的内存最大值。该值不会影响net.core.wmem_max,“静态”选参数SO_SNDBUF则不受该值影响。默认值为131072(128K)。这个数值对发送数据很有帮助。

net.ipv4.tcp_mem = 786432   1048576       1572864

此选项里有三个变量:low,pressure,high。

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倍的数据。)

net.ipv4.tcp_dsack = 1

默认值为1,允许TCP发送“两个完全相同”的SACK。

net.ipv4.tcp_ecn = 0

默认值为0,打开TCP的直接拥塞通告功能。

net.ipv4.tcp_reordering = 3

默认值为3,TCP流中重排序的数据报最大数量,(一般推荐要比3大一些,比如说5)

net.ipv4.tcp_fack = 1

默认值为1,打开FACK拥塞避免和快速重传功能。(当tcp_sack设置为0的时候,这个值即使设置为1也无效。)

net.ipv4.tcp_orphan_retries = 0

默认值是7,在近端丢弃TCP链接前,要进行多少次重试,默认值为7个,相当于50秒-16分钟,视RTO而定。如果您的系统是负载很大的web服务器,那么也许需要降低该值,这类sockets可能会耗费大量的资源。

net.ipv4.inet_peer_gc_maxtime = 120

废物收集(GC)通过最大间隔,这个间隔会影响到缓冲池中内存的低压力。该值以jiffies为单位测量。

net.ipv4.inet_peer_gc_mintime = 10

每一遍碎片收集之间的最小时间间隔,当内存压力比较大的时候,调整这个间隔非常有效。

net.ipv4.inet_peer_maxttl = 600

entries的最大生存期。在pool没有内存压力的情况下(比如,pool中entries的数量非常少的时候,)未使用的entries经过一段时间就会过期。

net.ipv4.inet_peer_minttl = 120

entries的最小生存期,应该不晓旭汇聚断分片的生存期。当pool的大小不大于Inet_peer_threshold时,这个最小生存期必须予以确保,以jiffies计

net.ipv4.inet_peer_threshold = 65664

这个文件里面写着一个数字,表示主机是否通过RARP、BOOTP、DHCP或其他机制取得其IP设置,否则就是0

net.ipv4.igmp_max_msf = 10

net.ipv4.igmp_max_memberships = 20

主机上最多有多少个igmp(多播)套接字进行监听。

net.ipv4.route.secret_interval = 600

net.ipv4.route.min_adv_mss = 256

该文件表示最小的MSS(Maximum Segrnent Size)大小,取决于第一跳的路由器MTU. 缺省值:256

net.ipv4.route.min_pmtu = 552

该文件表示最小路径MTU的大小

net.ipv4.route.mtu_expires = 600

该文件表示PMTU信息缓存多长时间(秒)缺省设置:600秒

net.ipv4.route.gc_elasticity = 8 net.ipv4.route.gc_min_interval = 0

net.ipv4.route.gc_thresh = 524288

用管理控制路由收集算法的频度和行为。用来设置失败恢复时非常重要。一旦上一次路由失败经过这么多秒后,linux会跳过失败而转向其他路由。如果你想要更快速的失败恢复就可以降低这个值。

net.ipv4.route.error_burst = 5000

这些参数用来限制从路由代码写入内核日志的warning消息。Error_cost这个值越高,写的消息越少。Error_burst控制什么时候应该丢弃消息。缺省值设置是限制为每5秒钟一次。

net.ipv4.route.error_cost = 1000

这些参数用来限制从路由代码写入内核日志的warning消息。Error_cost的值越高,写的消息越少,error_burst控制什么时候应该丢弃消息,缺省设置是限制为每5秒一次。

net.ipv4.route.redirect_silence = 20480

重定向的超时,经过这么长时间后,重定向会重发,而不管是否已经因为超过load或者number限制而停止。

net.ipv4.route.redirect_number = 9

决定是否要向特定主机发送更多的ICMP重定向的因子。一旦达到load限制或者number的限制就不再发送。

net.ipv4.route.redirect_load = 20

决定是否要向特定主机发送更多的ICMP重定向的因子。一旦达到load限制或者number限制后就不在发送。

net.ipv4.route.gc_interval = 60

默认值为60,数值越小cache释放的速度会越快。意思是说:cache会记录连线当时的资讯,如gateway如果断线的当时,cache记录的gateway依然是断掉连线的那一条线路的gateway。而且cache的reflush时间又还那么长,就会产生连线失效的状况,因此把数值调低看看。

net.ipv4.route.gc_timeout = 300

刷新路由缓冲的延时。

net.ipv4.route.max_size = 8388608

路由缓冲的最大值。一旦缓冲满。就清除旧的条目。

net.ipv4.route.max_delay = 10

刷新路由缓冲的最大延迟。

net.ipv4.route.min_delay = 2

刷新路由缓冲的最小延迟。

net.ipv4.icmp_errors_use_inbound_ifaddr = 0

允许使用接收到造成这一错误的报文的接口地址。

net.ipv4.icmp_ignore_bogus_error_responses = 0

默认是0,设置他之后,能忽略由网络中的那些声称回应地址是广播地址的主机生产的ICMP错误。

net.ipv4.icmp_echo_ignore_broadcasts = 0

默认设置为1忽略子网广播消息。可以拒绝服务攻击

net.ipv4.icmp_echo_ignore_all = 0

根本不要响应echo包。不要设置为默认,他可能在你正被利用成为DoS攻击的跳板时可能有用。

net.ipv4.ip_local_port_range = 32768       61000

用于向外连接的宽口范围。默认情况为1024到61000

net.ipv4.tcp_max_syn_backlog = 1024

记录的那些尚未收到客户端确认信息的链接请求的最大值。 默认值为4096 如果设置这个值大于4096最好同时调整include/net/tcp.h中的TCP_SYNQ_HSIZE,保证TCP_SYNQ_HSIZE*16 <=tcp_max_syn_backlo然后重新编译内核。

net.ipv4.tcp_rfc1337 = 0

这个开关能启动对于在RFC1337中描述的“tcp的time-wait”问题的修复。启用后,内核将丢弃那些发往time-wait状态TCP套接字的RST包,默认是0.

net.ipv4.tcp_stdurg = 0

使用TCP紧急指针的主机需求解释。因为大多数主机采用BSD解释。所以如果你在linux上打开它,可能会影响它与其它机器的正常通讯。默认是0

net.ipv4.tcp_abort_on_overflow = 0

控制着当有很多的链接请求时内核的行为。启用的话,如果服务超载,内核将主动发送RST包。

net.ipv4.tcp_tw_recycle = 1

能够更快的回收TIME-WAIT。默认值为1。

net.ipv4.tcp_syncookies = 0

默认值是0,只有在内核编译时选择了CONFIG_SYNCOOKIES时才会发生作用。当出现syn等候队列出现溢出时对方发送syncookies。目的是为了防止syn flood攻击。

net.ipv4.tcp_fin_timeout = 60

当套接字由本端要求关闭,它决定保持在FIN-WAIT-2状态的时间。默认值为60秒。2.2内核的通常值是180秒。这个数值如果设置太大会出现内存溢出的风险。

net.ipv4.tcp_retries2 = 15

在杀掉一个活动的TCP链接前重试多少次。RFC 1122规定这个限制应该长于100秒。默认值是15 相当于13~30分钟(取决于RIO)

net.ipv4.tcp_retries1 = 3

在认定出错并向网络层提交错误报告前,重试多少次。默认设置为RFC规定的最小值:3,相当于3秒~8分钟(取决于RIO)

net.ipv4.tcp_keepalive_intvl = 75

当检测没有确认时,重新发送检测的频度,默认是75秒。

net.ipv4.tcp_keepalive_probes = 9

在认定链接失效之前,发送多少个TCP的keepalive的检测包,默认值为9.这个值乘以tcp_keepalive_intvl之后决定了一个链接发送了keepalive之后可以有多少时间没有回应。

net.ipv4.tcp_keepalive_time = 7200

当启用keepalive的时候,TCP发送keepalive消息的频度,默认为2小时。

 

net.ipv4.ipfrag_time = 30

IP分片在内存中的保留时间(秒数)

net.ipv4.ip_dynaddr = 0

该参数通常用于拨号连接的情况,可以使用系统能够立即改变IP包的源地址为该IP地址,同时中断原有的tcp对话而用新地址重新发出一个syn请求包,开始新的tcp对话。在默认ip欺骗时,该参数可以立即改变伪装地址为新的IP地址。该参数的参数值可以是:

1.      启动该功能。

2.      使用冗余模式启动该功能。

0.      禁止该功能。

 

net.ipv4.ipfrag_low_thresh = 196608

用于IP分片汇聚的最小内存用量。

net.ipv4.ipfrag_high_thresh = 262144

用于IP分片汇聚的最大内存用量。

net.ipv4.tcp_max_tw_buckets = 180000

系统同时保持timewait套接字的最大数。默认值为180000。

net.ipv4.tcp_max_orphans = 262144

系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿链接将即将被复位并打印出警告信息。这个限制仅仅是为了防止简单的DOS攻击。

net.ipv4.tcp_synack_retries = 5

为了打开对端的链接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃链接前发送SYN+ACK包的数量。

net.ipv4.tcp_syn_retries = 5

在内核放弃建立连接前发送SYN包的数量。

net.ipv4.ip_nonlocal_bind = 0

如果你希望你的应用程序能够绑定到不属于本地网卡的地址上时,设置这个选项。如果你的机器没有专线时非常有用,即使你的链接断开,你的服务也可以启动并绑定在一个指定的地址上。

net.ipv4.ip_no_pmtu_disc = 0

如果你想禁止“沿途MTU发现”就设置它。“沿途MTU发现”是一种技术,可以在传输路径上检测出最大的MTU值。

net.ipv4.ip_autoconfig = 0

这个文件里面写着一个数字,表示主机是否通过RARP、BOOTP、DHCP或者其他机制取得其IP配置,否则就是0.

net.ipv4.ip_default_ttl = 64

数据包的生存期。

net.ipv4.ip_forward = 0

路由转发功能,默认为0是关闭的,如需要打开需要更改为1。

net.ipv4.tcp_retrans_collapse = 1

为兼容某些糟糕的打印机设置的“将错就错”选项。再次发送时,把数据包增大一些,来避免某些TCP协议栈的BUG。

net.ipv4.tcp_sack = 1

特别针对丢失的数据包使用选择性ACK,这样有助于快速恢复。

net.ipv4. = 1

一般来说TCP/IP允许设置窗口尺寸达到65535字节,对于速度确实很高的网络而言这个值可能还是太小。这个选项允许设置上G字节的窗口大小,在带宽延时很大的环境中使用。如果内核认为它无法发包,就会丢弃这个个包,并向发包的主机发送ICMP通知。

net.ipv4.tcp_timestamps = 1

时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号,时间戳能够让内核接受这种“异常”的数据包。

net.core.somaxconn = 128

限制套接字侦听积压,已知在使用着的somaxconn。默认值为128。如果调整套接字请参阅tcp_max_syn_backlog 。

net.core.divert_version = 0.46

net.core.optmem_max = 20480

指定了每个套接字说允许的最大缓冲区的大小

net.core.message_burst = 10

写新的警告消息所需的时间(以1/10秒为单位);在这个时间内所收到的其它警告消息会被丢弃。则用于防止某个企图用消息“淹没”您系统的人所使用的拒绝服务(denial of service)攻击。缺省设置10秒

net.core.message_cost = 5

该文件存有与每个警告消息相关的成本值,该值越大,越有可能忽略警告消息。默认值:5

net.core.mod_cong = 290

net.core.lo_cong = 100

net.core.no_cong = 20

net.core.no_cong_thresh = 10

net.core.netdev_max_backlog = 300

指定在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数。

net.core.dev_weight = 64

为CPU分时系统包调度工作。默认值为64

net.core.rmem_default = 135168

接收窗口的默认大小

net.core.wmem_default = 135168

默认的发送窗口大小

net.core.rmem_max = 135168

接收窗口的最大大小

net.core.wmem_max = 135168

发送窗口的最大大小

vm.percpu_pagelist_fraction = 0

vm.max_queue_depth = 0

vm.oom-kill = 1

vm.legacy_va_layout = 0

该文件表示是否使用最新的32位共享内存mmap()系统调用,linux支持的共享内存分配方式包括mmap(),posix,system VIPC。

0,使用最新32为mmap()系统调用。

1,使用2.4内核提供的系统调用。

默认值:0

vm.vfs_cache_pressure = 100

该文件表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。缺省值:100

vm.block_dump = 0

该文件表示是否打开block Debug模式,用于记录所有的读写及Dirty Block写回动作。缺省值:0 禁用Block Bebug模式。

vm.laptop_mode = 0

如果返回值为0的话。表示系统还未进行Laptop Mode。如果返回其他正数值表示系统成功进入Laptop Mode。

vm.max_map_count = 65536

该文件允许max_map_count限制虚拟内存的数量。

vm.min_free_kbytes = 102400

该文件表示强制linux vm最低保留多少空闲内存(Kbytes)。

vm.lower_zone_protection = 0

vm.hugetlb_shm_group = 0

该文件表示允许使用hugetlb页创建system VIPC共享内存段的系统组ID。

vm.nr_hugepages = 0

该文件表示系统保留的hugetlb页数。

vm.swappiness = 60

减少系统对于swap频繁的写入,将加快应用程序之间的切换,有助于提升系统性能。默认值为60。

vm.nr_pdflush_threads = 2

该文件表示当前正在运行的pdflush进程数量,在I/O负载高的情况下,内核会自动增加更多pdflush进程。 缺省设置:2(只读)

vm.dirty_expire_centisecs = 3000

该文件表示如果废数据在内存中驻留时间超过该值,pdflush进程在下一次将把这些数据写回磁盘。

vm.dirty_writeback_centisecs = 500

该文件表示pdflush进程周期性间隔多久把废数据写回磁盘。缺省值:500(1/100秒)

vm.dirty_ratio = 40

该文件表示如果进程产生的废数据到达系统整体内存的百分比,此时进程自信把废数据写回磁盘。 缺省值:40。

vm.dirty_background_ratio = 10

该文件表示废数据到达系统整体内存的百分比,此时触发pdflush进程把废数据写回磁盘。缺省设置:10

vm.page-cluster = 3

该文件表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页 缺省值为3(2的3次方,8页)

vm.overcommit_ratio = 50

该文件表示,如果overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。 系统可分配内存=交换空间+物理内存*overcommit_ratio/100。

vm.overcommit_memory = 0

该文件指定了内核针对内存分配的策略,其值可是0、1、2。

2,表示内存将检查是否足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

3,表示内存允许分配所有的物理内存,而不管当前的内存状态如何。

4,表示内核允许分配超过所有物理内存和交换空间总和的内存。(参照overcommit_ratio)。

kernel.wake_balance = 1

导致调度运行线程被唤醒的任何avaialble调度的CPU。而不是它的CPU的优化的基础上缓存痕迹。默认为1

kernel.suid_dumpable = 0

kernel.unknown_nmi_panic = 0

该参数的值影响的行为(非屏蔽中断处理)。当这个值为非0,未知的NMI受阻,PANIC出现。这时,内核调试信息显示控制台,则可以减轻系统中的程序挂起。

kernel.ngroups_max = 65536

该文件显示了最大数量的补充群体用户可以是一个成员(内核的NGROUPS_MAX)的使用者。缺省值是65536,这可调似乎没有在任何地方使用最新的内核

kernel.printk_ratelimit_burst = 10

一段时间后,我们执行一个信息由printk_ratelimit秒钟,我们允许脉冲信息通过。Printk_ratelimit_burst指定信息数量。在ratelimiting开始起用前,我们提交出信息。

kernel.printk_ratelimit = 5

一些警告信息速度有限。Printk_ratelimit指定的最小长度的时间间隔这些信息(秒)。默认情况下,我们允许美5秒间隔。值为0时将禁用速率限制。

kernel.panic_on_oops = 1

控制内核的行为时遇到错误。

0 尝试继续运行。

1 延迟几秒钟(输出klogd时间记录),然后警告,如果警告sysctl也是非0后机器将重新启动。

kernel.pid_max = 32768

PID分配限制值。当内核下一个PID值到达这个值,它会回到最低的PID值。PID的最大的pid_max未分配,默认值为32768

kernel.overflowgid = 65534kernel.overflowuid = 65534

这两个文件分别保存那些支持16位用户标识和组标识的任何文件系统的用户标识(UID)和组标识(GID)。可是更改这些值,但如果您确实觉得需要这样做,那么可能会发现更改组和密码文件项更容易些。

kernel.pty.nr = 1

这个只读文件表明多少unix的98假终端目前正在使用

kernel.pty.max = 4096

此文件规定的最大数量的unix 98 假终端。

kernel.random.uuid = cbd55511-5292-4195-99f3-c7e0b5b87624

kernel.random.boot_id = 538713fc-3f16-4d9f-9c75-7e5e61c10ee9

这个只读文件包含随机字符串一样。一次是在系统启动后产生。另见:与/proc/sys/kernel/random/uuid.

这个只读文件包含随机字符串一样。每次都会重新读。请参阅:/proc/sys/kernel/random/boot_id。

kernel.random.write_wakeup_threshold = 128

此文件包含二进制位数以下唤醒进程,做选择()或查询()的写权限的/dev/rrandom。

kernel.random.read_wakeup_threshold = 64

这个文件包含了很多信息片,他们有关于激活很多因等待查询/dev/random信息而休眠的进程。默认值为64。

kernel.random.entropy_avail = 3456

这个只读文件给出可用的平均信息量,通常,这个字为4096(bits)。一个全部的信息平均量的统筹。

kernel.random.poolsize = 512

这个文件提供平均信息数量池的大小。通常,这将是4096bits(512btyes).它可以将其更改为任何值的一种算法用。目前的选择是:32,64,128,256,512,1024,2048。

kernel.threads-max = 139264

该文件指定内核所能使用的线程的最大数目。

kernel.cad_pid = 1

按 ctrl-alt-del这个顺序 按下这些键  可以查到进程的id,init默认的id 是1

kernel.sysrq = 0

如果该文件指定的值为非0,则激活sysctem request key。默认值:0。

kernel.sem = 250       32000    32   128

该参数表示设置的信号量。

kernel.msgmnb = 16384

该文件指定在一个消息队列中最大的字节数 缺省设置:16384。

kernel.msgmni = 16

该文件指定消息队列标识的最大数目。缺省设置:16。

kernel.msgmax = 8192

该文件指定了从一个进程发送到另一个进程的消息最大长度。进程间的消息传递是在内核的内存中进行的。不会交换到硬盘上。所以如果增加该值,则将增加操作系统所使用的内存数量。

kernel.shmmni = 4096

该参数用于设置系统范围内共享内存段的最大数量,默认值为4096,通常不需要修改。

kernel.shmall = 2097152

该参数表示统一一次可以使用的共享内存总量(以页为单位)。默认是2097152,通常不需要修改。

kernel.shmmax = 33554432

该参数定义了共享内存段的最大尺寸(以字节为单位)。默认是32M。

kernel.acct = 2  4    30

该文件有三个配置值,根据包含日志的文件系统上可用空间的数量(以百分比表示),这些值控制何时开始进行进程记账,如果可用空间低于这个百分比值,则停止进程记账,如果可用共建高于这个百分比值,则开始进程记账。检查上面两个值得频率(以秒为单位)要更改这个文件的某个值,应该回送用空格分隔开的一串数字。默认值:2 4 30 如果包含日志的文件系统上只有少于2%的可用空间,则这些值会使记账停止,如果有4%或者更多的空间,则再次启动记账,每30秒做一次检查。

kernel.hotplug = /sbin/hotplug

hotplug的策略代理的位置,默认值是“/sbin/hotplug”

kernel.modprobe = /sbin/modprobe

这里是modprobe所存放的位置,使用这个程序按照要求装载模块。缺省值:”/sbin/modprobe”.

kernel.printk = 6      4     1     7

该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处,关于不同日志级别的更多信息,请阅读syslog。该文件4个值为:

控制台日志级别,优先级高于该值的消息将打印值控制台。

缺省消息日志级别:将用该优先级来打印没有优先级的消息。

最低的控制台日志级别:控制台日志级别可被设置最小值(最高优先级)

缺省的控制台日志级别:控制台日志级别的缺省值、

缺省设置:6 4 1 7。

kernel.ctrl-alt-del = 0

该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应,这两个关键值为0值表示捕获ctrl+alt+delete。并将其送至init程序。这将允许系统可以完美地关闭和重启,就好象你输入shutdown命令一样。1值表示不捕获ctrl+alt+delete,将执行非干净的关闭,就好象直接关闭电源一样。默认值为0。

kernel.real-root-dev = 0

如果你已经支持编译initrd内核这个是可以编译的。在这种情况下,如果“真”根设备可以从linux内部文件系统改变新的文件设备号

kernel.cap-bound = -257

这个参数所谓“性能限制规定”的使用者空间:列表功能,可以将

kernel.tainted = 0

如果内核已经被非零改变。数值可ORed在一起:

1 一个模块与非GPL许可已被载入,这包括模块没有授权。(把modutils和module-init-tools在一起。)

2 这个模块被insmod强制装入。(把modutils和module-init-tools)。

4 不安全的SMP处理器:CPU的SMP与SMP不适合。

8 一个模块被rommod强制卸载(把modutils和module-init-tools)

16 自动校验发生异常。

32 系统已达到bad_page

kernel.core_pattern = core

是用来指定一个核心DumpFlie可格局名称:最大长度是64个字符。默认值为:“core”。Core_pattern被用作一种模式模板的输出文件名。某些字符串的模式(从“%”)是取代其实际值。反向兼容core_uses_pid:如果core_pattern不包括“%,p值”(默认是不)和core_uses_pid设置,然后

kernel.core_uses_pid = 1

默认coredump filename是“核心”。通过设置core_uses_pid为1(默认值为0),文件名的coredump成为核心PID。如果core_pattern不包括“%p”(默认是不)和core_uses_pid设置。那时pid将附加到文件名上。

kernel.print-fatal-signals = 0

这能够打印出一些关于用户在内核控制台出错的一些信息。它能记录早先的用户在那里出现了错误。默认是 off

kernel.exec-shield-randomize = 1

文件控制exec-shield是否要随机化VM映射。

0-      禁用随机化VM映射。

1-      启用随机化VM映射。

此选项默认值为1

kernel.exec-shield = 1

文件控制总体Exec-shield功能。这里他值有以下几个

0-(包括随机化的VM映射)在所有的二进制程序中被禁用,不管它是否已被标记。

1-在所有标记的二进制程序中被启用。

2-在所有二进制程序中被启用,不管它是否被标记)(仅用于测试目的)

此选项默认值为1.

kernel.panic = 0

该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位)。0秒设置在内发生内核严重错误时将禁止重新引导。缺省值:0

kernel.domainname = (none)

该文件允许配置网络域名。它没有缺省值,也许已经设置了域名。也许没有设置。

kernel.hostname = localhost.localdomain

该文件允许你配置网络主机名。

kernel.version = #1 SMP Fri Apr 20 16:36:54 EDT 2007

内核版本

kernel.osrelease = 2.6.9-55.ELsmp

内核OS 发布号

kernel.ostype = Linux

内核OS类型。

fs.mqueue.msgsize_max = 8192

此文件可以用来查看和更改信息最大值的限度。这个值作为上限的属性。Attr->mq_msgsize争论惯于mq_open(3).默认值为8192字节;上限是INT_MAX(2147483647的linux/86)。此限制被忽略的特殊程序(CAP_SYS_RESOURCE).

fs.mqueue.msg_max = 10

此文件可以用来查看和更改值上限的最大数量的信息在一个队列中。这个值起到了一个最高限度的作用。这个值默认最小值为10;上限是硬盘最大值(131072/sizeof(void *))(32768上Linux/86).这个限制忽视了特殊程序。但是尽管如此HARD_MAX实行最高限额。

fs.mqueue.queues_max = 256

此文件可以用来查看和更改系统数量限制和消息队列,这个是可以创建。一旦达到限额。只有特殊的进程可以创建新的消息队列。这个默认值为256.它可以将其更改范围为0-INT_MAX的值

fs.quota.syncs = 21

加大SYN队列长度可以容纳更多等待连接的网络连接数。

fs.aio-max-nr = 65536 fs.aio-nr = 0

这个参数是运行一些事件中指定的io_setup系统调用当前所有活动的AIO。如果aio-nr的达到aio-max-nr,这时io-setup将失败。Aio-nr显示当前整个系统AIO请求数。Aiomax-nr允许你改变最大值好能让aio-nr能增加。

fs.lease-break-time = 45

此文件规定内核在宽限期内准许租给一个私有的进程,在它发出信号后,那个处理通告发给另一个正在等待的开启档案,如果租约的文件在规定的时间里没有删除或者降级租凭,内核将强制中断合约。

fs.dir-notify-enable = 1

该文件可用于禁止或启用dnotify接口中所描述fcntl(2)根据整个系统范围。此值为0禁用此文件中的接口,值为1时启用此接口。

fs.leases-enable = 1

这个文件可以在整个系统里启动或禁用文件租约。如果这个值是0,租约停用,一个非零的值允许租约。

fs.overflowgid = 65534 fs.overflowuid = 65534

这两个文件分别保存那些支持16位用户标识和组标识的任何文件系统的标识(UID)和组标识(GID)。可以更改这些值。但是如果您确实觉得需要这样做,那么您可能会发现更改组和密码文件项更容易些。缺省值为65534。

fs.dentry-state = 61453    55221    45   0     0     0

现况的目录缓存。由于目录项是动态分配和释放。此文件表明目前的状况。他有6个值,最后两个值在不使用时总是0。

fs.file-max = 779703

该文件指定了可以分配的文件句柄的最大数目。默认值为4096

fs.file-nr = 3930 0     779703

该文件与file-max相关,它有三个值:已分配文件句柄的数目,已使用文件句柄的数目,文件句柄的最大数目,该文件是只读的,仅用于显示信息。

fs.inode-state = 80826      27574    0     0     0     0     0

任何以名称“inode”开头的文件所执行的操作与上面那些以名称“file”开头的文件所执行的操作一样,但所执行的操作与索引节点有关,而与文件句柄无关。

fs.inode-nr = 8082  6     27574

该文件与file-max相关,它有三个值:已分配文件句柄的数目。已使用文件句柄的数目。文件句柄的最大数目。

fs.binfmt_misc.status = enabledf

binfmt_misc的注册文件系统状态,默认enablef。

 

 

So first tip: cat /proc/sys/kernel/printk_ratelimit shows you the amount of seconds the ratelimiter suppresses messages. The default is 5 seconds and you can adjust it to more reasonable values in case you get heavily flooded like in the example above. Notice that this will mean your dmesg becomes rather useless as the kernel is not very selective about which messages to suppress.

Now when you google "Neighbour table overflow", you'll find thousands of pages suggesting to increase the arp / lladdr caches and garbage collection (gc) times like so:

# Set ARP cache garbage collection interval
net.ipv4.neigh.default.gc_interval = 3600
net.ipv6.neigh.default.gc_interval = 3600

# Set ARP cache entry timeout
net.ipv4.neigh.default.gc_stale_time = 3600
net.ipv6.neigh.default.gc_stale_time = 3600

# Setup cache threshold for ARP
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 2048
net.ipv4.neigh.default.gc_thresh3 = 4096

# And the same for IPv6
net.ipv6.neigh.default.gc_thresh1 = 1024
net.ipv6.neigh.default.gc_thresh2 = 2048
net.ipv6.neigh.default.gc_thresh3 = 4096 

That helps if and only if you really have 500+ IPv6 neighbours. Unless you have a badly segmented network or run in a university lab, you don't.

Now ... you may be seeing messages like "kernel: vmbr0: Multicast hash table maximum of 512 reached, disabling snooping: eth0" or "kernel: vmbr0: Multicast hash table chain limit reached: eth0" in your dmesg / syslog / journal.

That hints at what is really happening here: The bridge confused the link-local router negotiation and so you get endless ff02:: neighbour routing entries added to your caches until they flow over. So increasing the caches as in the sysctl entries above is basically pasting band-aid over the problem.

ip route show cache table all will show you the tables. With all entries. See if you have too many ff02:: neighbours in there. If so, you should try to add change your /etc/network/interfaces on Debian / Ubuntu similar to this:

iface vmbr0 inet6 static
   address 2a02:0100:1:1::500:1
   netmask 64
   gateway 2a02:0100:1:1::1
   post-up echo 2048 > /sys/class/net/br-lan/bridge/hash_max
   post-up echo 1 > /sys/class/net/br-lan/bridge/multicast_snooping
   post-up echo 0 > /proc/sys/net/ipv6/conf/vmbr0/accept_ra 

This obviously assumes your bridge is called vmbr0.

Red Hat/CentOS users will need to adjust the config spread throughout multiple files in /etc/sysconfig/network-scripts. The ifup-ipv6 script is a good one to look at and amend.

The increase of the hash_max entry makes your bridge survive the initial storm of (useless) router solicitations.
multicast_snooping is usually off when routing but you may need it to make sure your VMs on the bridge can be reached.
Finally we make sure the bridge does not accept router announcements. Because that is what the host system should handle.

Sometimes you may need to throw in a static route or two to reach the VMs. P&P, you remember ... ip -6 neigh add nud permanent proxy <VM:IPv6:goes::here> dev vmbr0 is your friend. Unfortunately the antidote for the dreaded "Neighbour table overflow" depends on the specific cause. So you'll have to poke around a bit. tcpdump -i eth0 -v ip6 will show you what is on the wire and tcpdump -i vmbr0 -v ip6 what's visible on the bridge.

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://blog.kos.org.cn/Linux/22.html

相关推荐

你肿么看?

        

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。