Centos系统内核优化参数列表

2024-02-19 15:41:46 浏览数 (2)

注:

代码语言:javascript复制
// 在centos中 sysctl -a 显示当前系统中可用的内核参数
Linux修改内核参数有三种方式:
(1)修改 /etc/sysctl.conf 文件,加入配置选项,格式为 key = value ,修改保存后调用 sysctl -p 加载新配置(此种方式在系统重新启动时不会丢失)
(2)使用sysctl命令临时修改,例如 sysctl -w kernel.hostname=XX 修改主机名
(3)修改/proc/sys目录中的文件,如: echo “379008 505344 758016” > /proc/sys/net/ipv4/tcp_mem
注:第二三种方式会使机器在重启之后就失效

一 内存参数列表 /proc/sys/vm/*

代码语言:javascript复制
// vm.admin_reserve_kbytes 给有cap_sys_admin权限的用户保留的内存数量(默认值是 min(free_page * 0.03, 8MB)) vm.block_dump 如果设置的是非零值,则会启用块I/O调试。
vm.compact_memory 进行内存压缩,只有在启用了CONFIG_COMPACTION选项才有效 1:开始进行内存压缩
vm.dirty_background_bytes 当脏页所占的内存数量超过dirty_background_bytes时,内核的flusher线程开始回写脏页。
vm.dirty_background_ratio 当脏页所占的百分比(相对于所有可用内存,即空闲内存页 可回收内存页)达到dirty_background_ratio时,write调用会唤醒内核的flusher线程开始回写脏页数据,直到脏页比例低于此值,与dirty_ratio不同,write调用此时并不会阻塞。
vm.dirty_bytes 当脏页所占的内存数量达到dirty_bytes时,执行磁盘写操作的进程自己开始回写脏数据。 注意:
dirty_bytes参数和
dirty_ratio参数是相对的,只能指定其中一个。当其中一个参数文件被写入时,会立即开始计算脏页限制,并且会将另一个参数的值清零
vm.dirty_expire_centisecs 脏数据的过期时间,超过该时间后内核的flusher线程被唤醒时会将脏数据回写到磁盘上,单位是百分之一秒。 vm.dirty_ratio 脏页所占的百分比(相对于所有可用内存,即空闲内存页 可回收内存页)达到dirty_ratio时,write调用会唤醒内核的flusher线程开始回写脏页数据,直到脏页比例低于此值,注意write调用此时会阻塞。
vm.dirty_writeback_centisecs 设置flusher内核线程唤醒的间隔,此线程用于将脏页回写到磁盘,单位是百分之一秒
vm.drop_caches 写入数值可以使内核释放page_cache,dentries和inodes缓存所占的内存。
1:只释放page_cache 2:只释放dentries和inodes缓存
3:释放page_cache、dentries和inodes缓存 vm.extfrag_threshold
vm.hugepages_treat_as_movable 用来控制是否可以从ZONE_MOVABLE内存域中分配大页面。如果设置为非零,大页面可以从ZONE_MOVABLE内存域分配。ZONE_MOVABLE内存域只有在指定了kernelcore启动参数的情况下才会创建,如果没有指定kernelcore启动参数,
hugepages_treat_as_movable参数则没有效果。
vm.hugetlb_shm_group 指定组ID,拥有该gid的用户可以使用大页创建SysV共享内存段
vm.laptop_mode 设置开启laptop mode,此模式主要是通过降低硬盘的转速来延长电池的续航时间。 0:关闭 1:启动
vm.legacy_va_layout 进程地址空间内存布局模式 0:经典布局 1:新布局 对于64位系统,默认采用经典布局
vm.lowmem_reserve_ratio 决定了内核保护这些低端内存域的强度。预留的内存值和lowmem_reserve_ratio数组中的值是倒数关系,如果值是256,则代表1/256,即为0.39%的zone内存大小。如果想要预留更多页,应该设更小一点的值。
vm.max_map_count 定义了一个进程能拥有的最多的内存区域
vm.memory_failure_early_kill 控制发生某个内核无法处理的内存错误发生的时候,如何去杀掉这个进程。当这些错误页有swap镜像的时候,内核会很好的处理这个错误,不会影响任何应用程序,但是如果没有的话,内核会把进程杀掉,避免内存错误的扩大
1:在发现内存错误的时候,就会把所有拥有此内存页的进程都杀掉 0:只是对这部分页进行unmap,然后把第一个试图进入这个页的进程杀掉
vm.memory_failure_recovery 是否开启内存错误恢复机制 1:开启 0:一旦出现内存错误,就panic
vm.min_free_kbytes 每个内存区保留的内存大小(以KB计算)
vm.min_slab_ratio 只在numa架构上使用,如果一个内存域中可以回收的slab页面所占的百分比(应该是相对于当前内存域的所有页面)超过min_slab_ratio,在回收区的slabs会被回收。这样可以确保即使在很少执行全局回收的NUMA系统中,slab的增长也是可控的。
vm.min_unmapped_ratio 只有在当前内存域中处于zone_reclaim_mode允许回收状态的内存页所占的百分比超过min_unmapped_ratio时,内存域才会执行回收操作。
vm.mmap_min_addr 指定用户进程通过mmap可使用的最小虚拟内存地址,以避免其在低地址空间产生映射导致安全问题;如果非0,则不允许mmap到NULL页,而此功能可在出现NULL指针时调试Kernel;mmap用于将文件映射至内存;
该设置意味着禁止用户进程访问low 4k地址空间
vm.nr_hugepages 大页的最小数目,需要连续的物理内存;oracle使用大页可以降低TLB的开销,节约内存和CPU资源,但要同时设置memlock且保证其大于大页;其与11gAMM不兼容
vm.nr_hugepages_mempolicy 与nr_hugepages类似,但只用于numa架构,配合numactl调整每个node的大页数量 vm.nr_overcommit_hugepages 保留于紧急使用的大页数,系统可分配最大大页数= nr_hugepages  
nr_overcommit_hugepages
vm.nr_pdflush_threads 只读文件,保存了当前正在运行的pdflush线程的数量
vm.numa_zonelist_order 设置内核选择zonelist的模式:
0:让内核智能选择使用Node或Zone方式的zonelist 1:选择Node方式的zonelist,Node(0)
ZONE_NORMAL -> Node(0) ZONE_DMA -> Node(1) ZONE_NORMAL
2:选择Zone方式的,Node(0) ZONE_NORMAL -> Node(1) ZONE_NORMAL -> Node(0)
ZONE_DMA
vm.oom_dump_tasks 如果启用,在内核执行OOM-killing时会打印系统内进程的信息(不包括内核线程),信息包括pid、uid、tgid、vm
size、rss、nr_ptes,swapents,oom_score_adj和进程名称。这些信息可以帮助找出为什么OOM
killer被执行,找到导致OOM的进程,以及了解为什么进程会被选中。 0:不打印系统内进程信息 1:打印系统内进程信息
vm.oom_kill_allocating_task 决定在oom的时候,oom killer杀哪些进程
非0:它会扫描进程队列,然后将可能导致内存溢出的进程杀掉,也就是占用内存最大的进程
0:它只杀掉导致oom的那个进程,避免了进程队列的扫描,但是释放的内存大小有限
vm.overcommit_kbytes 内存可过量分配的数量(单位为KB)
vm.overcommit_memory 是否允许内存的过量分配,允许进程分配比它实际使用的更多的内存。
0:当用户申请内存的时候,内核会去检查是否有这么大的内存空间,当超过地址空间会被拒绝 1:内核始终认为,有足够大的内存空间,直到它用完了位置
2:内核禁止任何形式的过量分配内存 Memory allocation limit = swapspace   physmem *
(overcommit_ratio / 100) vm.overcommit_ratio 内存可过量分配的百分比。
vm.page-cluster 参数控制一次写入或读出swap分区的页面数量。它是一个对数值,如果设置为0,表示1页;如果设置为1,表示2页;如果设置为2,则表示4页。
vm.panic_on_oom 用于控制如何处理out-of-memory,可选值包括0/1/2 0:当内存不足时内核调用OOM
killer杀死一些rogue进程,每个进程描述符都有一个oom_score标示,oom killer会选择oom_score较大的进程
1:发生了OOM以后,如果有mempolicy/cpusets的进程限制,而这些nodes导致了内存问题的时候,OOM
Killer会干掉这些中的一个,系统也会恢复 2:OOM后必然panic
vm.percpu_pagelist_fraction 每个CPU能从每个zone所能分配到的pages的最大值(单位每个zone的1/X),0为不限制
vm.stat_interval VM信息更新频率(以秒为单位)
vm.swappiness 该值越高则linux越倾向于将部分长期没有用到的页swap,即便有足够空余物理内存(1~100)
vm.user_reserve_kbytes vm.vfs_cache_pressure 表示内核回收用于directory和inode
cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode
cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode
cache;增加该值超过100,将导致内核倾向于回收directory和inode cache
vm.zone_reclaim_mode 参数只有在启用CONFIG_NUMA选项时才有效,zone_reclaim_mode用来控制在内存域OOM时,如何来回收内存。
0:禁止内存域回收,从其他zone分配内存 1:启用内存域回收 2:通过回写脏页回收内存 4:通过swap回收内存

二 内核参数列表 /proc/sys/kernel/*

代码语言:javascript复制
//kernel.acct acct功能用于系统记录进程信息,正常结束的进程都会在该文件尾添加对应的信息。异常结束是指重启或其它致命的系统问题,不能够记录永不停止的进程。该设置需要配置三个值,分别是:
1.如果文件系统可用空间低于这个百分比值,则停止记录进程信息。
2.如果文件系统可用空间高于这个百分比值,则开始记录进程信息。
3.检查上面两个值的频率(以秒为单位)。 kernel.auto_msgmni 系统自动设置同时运行的消息队列个数。 0:不自动 1:自动 kernel.blk_iopoll kernel.cad_pid 接收Ctrl-alt-del操作的INT信号的进程的PID
kernel.cap_last_cap 系统capabilities最高支持的权限等级。
详见:http://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html
kernel.compat-log
kernel.core_pattern 设置core文件保存位置或文件名,只有文件名时,则保存在应用程序运行的目录下
kernel.core_pipe_limit 定义了可以有多少个并发的崩溃程序可以通过管道模式传递给指定的core信息收集程序。如果超过了指定数,则后续的程序将不会处理,只在内核日志中做记录。0是个特殊的值,当设置为0时,不限制并行捕捉崩溃的进程,但不会等待用户程序搜集完毕方才回收/proc/pid目录(就是说,崩溃程序的相关信息可能随时被回收,搜集的信息可能不全)。
kernel.core_uses_pid Core文件的文件名是否添加应用程序pid做为扩展 0:不添加 1:添加
kernel.ctrl-alt-del 该值控制系统在接收到 ctrl alt delete 按键组合时如何反应:
1:不捕获ctrl-alt-del,将系统类似于直接关闭电源
0:捕获ctrl-alt-del,并将此信号传至cad_pid保存的PID号进程进行处理
kernel.dmesg_restrict 限制哪些用户可以查看syslog日志 0:不限制 1:只有特权用户能够查看
kernel.domainname 网络域名(重启失效)
kernel.ftrace_dump_on_oops 确定是否将ftrace的缓冲区的信息打印出来,是通过printk来打印的 0:不打印
1:在系统oops时,自动dump堆栈信息到输出终端 kernel.hostname 主机名(重启失效)
kernel.hotplug 该文件给出了当前系统支持热插拔(hotplug)时接收热插拔事件的程序的名字(包括路径)。
kernel.hung_task_check_count hung_task检查的进程数量最大值
hung_task用于检测一个进程是否在TASK_UNINTERRUPTIBLE状态过长,只有在等待IO的时候进程才会处于TASK_UNINTERRUPTIBLE状态,这个状态的进程内核不能够通过信号将其唤醒并杀死。
kernel.hung_task_panic 设置hung_task发生后是否引发panic 1:触发 0:不触发
kernel.hung_task_timeout_secs hung_task超时时间(以秒为单位),当一个进程在TASK_UNINTERRUPTIBLE状态超过这个时间后,会发生一个hung_task
linux会设置40%的可用内存用来做系统cache,当flush数据时这40%内存中的数据由于和IO同步问题导致超时。
kernel.hung_task_warnings 最大产生警告数量,当发生一次hung_task时会产生一次警告,但警告数量到达此值后之后的hung_task就不会发生警告
kernel.kexec_load_disabled 表示kexec_load系统调用是否被禁止,此系统调用用于kdump。当发生了一次kexec_load后,此值会自动设置为1。
0:开启kexec_load系统调用 1:禁止kexec_load系统调用 kernel.keys.gc_delay
kernel.keys.maxbytes kernel.keys.maxkeys
kernel.keys.persistent_keyring_expiry kernel.keys.root_maxbytes
kernel.keys.root_maxkeys
kernel.kptr_restrict 是否启用kptr_restrice,此功能为安全性功能,用于屏蔽内核指针。 0:该特性被完全禁止;
1:那些使用“%pk”打印出来的内核指针被隐藏(会以一长串0替换掉),除非用户有CAP_SYSLOG权限,并且没有改变他们的UID/GID(防止在撤销权限之前打开的文件泄露指针信息);
2:所有内核指使用“%pk”打印的都被隐藏。 kernel.max_lock_depth 触发死锁检查的嵌套深度值
kernel.modprobe 该文件给出了当系统支持module时完成modprobe功能的程序的名字(包括路径)。
kernel.modules_disabled 表示是否禁止内核运行时可加载模块 0:不禁止 1:禁止
kernel.msgmax 消息队列中单个消息的最大字节数
kernel.msgmnb 单个消息队列中允许的最大字节长度(限制单个消息队列中所有消息包含的字节数之和)
kernel.msgmni 系统中同时运行的消息队列的个数 kernel.ngroups_max 每个用户最大的组数
kernel.nmi_watchdog 使能nmi_watchdog 0:禁止 1:开启
kernel.numa_balancing 是否开启numa_balancing?这块具体看代码
kernel.numa_balancing_scan_delay_ms 单个进程每次进行numa_balancing扫描的间隔时间
kernel.numa_balancing_scan_period_max_ms 每次扫描最多花费的时间?
kernel.numa_balancing_scan_period_min_ms 每次扫描最少花费的时间?
kernel.numa_balancing_scan_size_mb 一次扫描进程多少MB的虚拟地址空间内存
kernel.numa_balancing_settle_count
kernel.osrelease 内核版本(例:3.10.0-229.7.2.rs1.2.ppc64)
kernel.ostype 操作系统的类型(例:Linux)
kernel.overflowgid Linux的GID为32位,但有些文件系统只支持16位的GID,此时若进行写操作会出错;当GID超过65535时会自动被转换为一个固定值,这个固定值保存在这个文件中
kernel.overflowuid Linux的UID为32位,但有些文件系统只支持16位的UID,此时若进行写操作会出错;当UID超过65535时会自动被转换为一个固定值,这个固定值保存在这个文件中
kernel.panic 系统发生panic时内核重新引导之前的等待时间 0:禁止重新引导 >0:重新引导前的等待时间(秒)
kernel.panic_on_oops 当系统发生oops或BUG时,所采取的措施 0:继续运行
1:让klog记录oops的输出,然后panic,若kernel.panic不为0,则等待后重新引导内核
kernel.panic_on_warn 0:只警告,不发生panic 1:发生panic
kernel.perf_cpu_time_max_percent perf分析工具最大能够占用CPU性能的百分比 0:不限制
1~100:百分比值
kernel.perf_event_max_sample_rate 设置perf_event的最大取样速率,默认值为100000
kernel.perf_event_mlock_kb 设置非特权用户能够允许常驻内存的内存大小。默认为516(KB)
kernel.perf_event_paranoid 用于限制访问性能计数器的权限 0:仅允许访问用户空间的性能计数器
1:内核与用户空间的性能计数器都可以访问 2:仅允许访问特殊的CPU数据(不包括跟踪点)
-1:不限制 kernel.pid_max 进程pid号的最大值 kernel.poweroff_cmd 执行关机命令的进程(包括路径) kernel.powersave-nap PPC专用,如果开启,则使用nap节能模式,关闭则使用doze节能模式 0:关闭 1:开启
kernel.print-fatal-signals
kernel.printk 该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。按顺序是:
1.控制台日志级别:优先级高于该值的消息将被打印至控制台
2.默认的消息日志级别:将用该优先级来打印没有优先级的消息
3.最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)
4.默认的控制台日志级别:控制台日志级别的缺省值 数值越小,优先级越高,级别有(0~7) kernel.printk_delay printk 消息之间的延迟毫秒数,此值不可设置
kernel.printk_ratelimit 等待允许再次printk的时间(以秒为单位),与printk_ratelimit()函数有关
详见:http://m.blog.csdn.net/blog/chenglinhust/8599159
kernel.printk_ratelimit_burst printk的缓存队列长度(每个printk为一个长度,比如此值为5,而有段代码是连续printk10次,系统的处理是先printk前5次,等待printk_ratelimit秒后,再打印后面5次)
kernel.pty.max 所能分配的PTY的最多个数(pty为虚拟终端,用于远程连接时)
kernel.pty.nr 当前分配的pty的个数 kernel.pty.reserve
kernel.random.boot_id 此文件是个只读文件,包含了一个随机字符串,在系统启动的时候会自动生成这个uuid
kernel.random.entropy_avail 此文件是个只读文件,给出了一个有效的熵(4096位)
kernel.random.poolsize 熵池大小,一般是4096位,可以改成任何大小
kernel.random.read_wakeup_threshold 该文件保存熵的长度,该长度用于唤醒因读取/dev/random设备而待机的进程(random设备的读缓冲区长度?)
kernel.random.uuid 此文件是个只读文件,包含了一个随机字符串,在random设备每次被读的时候生成
kernel.random.write_wakeup_threshold 该文件保存熵的长度,该长度用于唤醒因写入/dev/random设备而待机的进程(random设备的写缓冲区长度?)
kernel.randomize_va_space 用于设置进程虚拟地址空间的随机化 0:关闭进程虚拟地址空间随机化
1:随机化进程虚拟地址空间中的mmap映射区的初始地址,栈空间的初始地址以及VDSO页的地址 2:在1的基础上加上堆区的随机化
(VDSO是用于兼容不同内核与glibc的接口的机制)
kernel.real-root-dev 根文件系统所在的设备(写入格式是0x主设备号(16位)次设备号(16位),例如0x801,主设备号是8,次设备号是1),只有使用initrd.img此参数才有效
kernel.sched_autogroup_enabled 启用后,内核会创建任务组来优化桌面程序的调度。它将把占用大量资源的应用程序放在它们自己的任务组,这有助于性能提升
0:禁止 1:开启 kernel.sched_cfs_bandwidth_slice_us
kernel.sched_child_runs_first 设置保证子进程初始化完成后在父进程之前先被调度 0:先调度父进程
1:先调度子进程 kernel.sched_domain.{CPUID}.{域ID}.busy_factor
kernel.sched_domain.{CPUID}.{域ID}.busy_idx
kernel.sched_domain.{CPUID}.{域ID}.cache_nice_tries
kernel.sched_domain.{CPUID}.{域ID}.flags
kernel.sched_domain.{CPUID}.{域ID}.forkexec_idx
kernel.sched_domain.{CPUID}.{域ID}.idle_idx
kernel.sched_domain.{CPUID}.{域ID}.imbalance_pct 判断该调度域是否已经均衡的一个基准值
kernel.sched_domain.{CPUID}.{域ID}.max_interval 设置此CPU进行负载均衡的最长间隔时间,上一次做了负载均衡经过了这个时间一定要再进行一次
kernel.sched_domain.{CPUID}.{域ID}.min_interval 设置此CPU进行负载均衡的最小间隔时间,在上一次负载均衡到这个时间内都不能再进行负载均衡
kernel.sched_domain.{CPUID}.{域ID}.name
kernel.sched_domain.{CPUID}.{域ID}.newidle_idx
kernel.sched_domain.{CPUID}.{域ID}.wake_idx
kernel.sched_latency_ns 表示正在运行进程的所能运行的时间的最大值,即使只有一个处于running状态的进程,运行到这个时间也要重新调度一次(以纳秒为单位,在运行时会自动变化?)
同时这个值也是所有可运行进程都运行一次所需的时间,每个CPU的running进程数 = sched_latency_ns /
sched_min_granularity_ns
kernel.sched_migration_cost_ns 该变量用来判断一个进程是否还是hot,如果进程的运行时间(now -
p->se.exec_start)小于它,那么内核认为它的code还在cache里,所以该进程还是hot,那么在迁移的时候就不会考虑它
kernel.sched_min_granularity_ns 表示一个进程在CPU上运行的最小时间,在此时间内,内核是不会主动挑选其他进程进行调度(以纳秒为单位,在运行时会自动变化?)
kernel.sched_nr_migrate 在多CPU情况下进行负载均衡时,一次最多移动多少个进程到另一个CPU上
kernel.sched_rr_timeslice_ms 用来指示round robin调度进程的间隔,这个间隔默认是100ms。
kernel.sched_rt_period_us 该参数与sched_rt_runtime_us一起决定了实时进程在以sched_rt_period为周期的时间内,实时进程最多能够运行的总的时间不能超过sched_rt_runtime_us
kernel.sched_rt_runtime_us 该参数与sched_rt_period一起决定了实时进程在以sched_rt_period为周期的时间内,实时进程最多能够运行的总的时间不能超过sched_rt_runtime_us
kernel.sched_shares_window_ns kernel.sched_time_avg_ms
kernel.sched_tunable_scaling 当内核试图调整sched_min_granularity,sched_latency和sched_wakeup_granularity这三个值的时候所使用的更新方法.
0:不调整 1:按照cpu个数以2为底的对数值进行调整 2:按照cpu的个数进行线性比例的调整
kernel.sched_wakeup_granularity_ns 该变量表示进程被唤醒后至少应该运行的时间的基数,它只是用来判断某个进程是否应该抢占当前进程,并不代表它能够执行的最小时间(sysctl_sched_min_granularity),如果这个数值越小,那么发生抢占的概率也就越高
kernel.sem 该文件包含4个值:
1.同一类信号的最多数量(semmsl)
2.系统中信号的最多数目,=semmni*semmsl (semmns)
3.每个semop系统调用所包含的最大的操作数(能调用的信号量的最多次数) (semopm)
4.系统中信号类型的数目的最大值,一个信号量标识符代表一个类型(semmni) 可见:http://www.cnblogs.com/jimeper/p/3141975.html
kernel.shmall 系统上可以使用的共享内存的总量(以字节为单位)。
kernel.shmmax 系统所允许的最大共享内存段的大小(以字节为单位)。 kernel.shmmni 整个系统共享内存段的最大数量。
kernel.shm_rmid_forced 强制SHM空间和一个进程联系在一起,所以可以通过杀死进程来释放内存 0:不设置 1:设置
kernel.softlockup_panic 设置产生softlockup时是否抛出一个panic。Softlockup用于检测CPU可以响应中断,但是在长时间内不能调度(比如禁止抢占时间太长)的死锁情况。这个机制运行在一个hrtimer的中断上下文,每隔一段时间检测一下是否发生了调度,如果过长时间没发生调度,说明系统被死锁。
0:不产生panic 1:产生panic
kernel.sysrq 该文件指定的值为非零,则激活键盘上的sysrq按键。这个按键用于给内核传递信息,用于紧急情况下重启系统。当遇到死机或者没有响应的时候,甚至连
tty 都进不去,可以尝试用 SysRq 重启计算机。 kernel.tainted 1:加载非GPL module
0:强制加载module kernel.threads-max 系统中进程数量(包括线程)的最大值
kernel.timer_migration kernel.usermodehelper.bset
kernel.usermodehelper.inheritable kernel.version 版本号(例:#1 SMP Mon
Sep 7 18:12:36 CST 2015)
kernel.watchdog 表示是否禁止softlockup模式和nmi_watchdog(softlockup用于唤醒watchdog)
0:禁止 1:开启
kernel.watchdog_thresh 用于设置高精度定时器(hrtimer)、nmi事件、softlockup、hardlockup的阀值(以秒为单位)
0:不设置阀值

三 网络参数列表 /proc/sys/net/*

代码语言:javascript复制
// net.bridge.bridge-nf-call-arptables
net.bridge.bridge-nf-call-ip6tables
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-filter-pppoe-tagged
net.bridge.bridge-nf-filter-vlan-tagged
net.bridge.bridge-nf-pass-vlan-input-dev
net.core.bpf_jit_enable 基于时间规则的编译器,用于基于PCAP(packet capture
library)并使用伯克利包过滤器(Berkeley Packet
Filter,如tcpdump)的用户工具,可以大幅提升复杂规则的处理性能。 0:禁止 1:开启
2:开启并请求编译器将跟踪数据时间写入内核日志
net.core.busy_poll 默认对网络设备进行poll和select操作的超时时间(us),具体数值最好以sockets数量而定
net.core.busy_read 默认读取在设备帧队列上数据帧的超时时间(us),推荐值:50
net.core.default_qdisc
net.core.dev_weight 每个CPU一次NAPI中断能够处理网络包数量的最大值
net.core.message_burst 设置每十秒写入多少次请求警告;此设置可以用来防止DOS攻击
net.core.message_cost 设置每一个警告的度量值,缺省为5,当用来防止DOS攻击时设置为0
net.core.netdev_budget 每次软中断处理的网络包个数
net.core.netdev_max_backlog 设置当个别接口接收包的速度快于内核处理速度时允许的最大的包序列
net.core.netdev_tstamp_prequeue 0:关闭,接收的数据包的时间戳在RPS程序处理之后进行标记,这样有可能时间戳会不够准确
1:打开,时间戳会尽可能早的标记 net.core.optmem_max 表示每个socket所允许的最大缓冲区的大小(字节)
net.core.rmem_default 设置接收socket的缺省缓存大小(字节)
net.core.rmem_max 设置接收socket的最大缓存大小(字节)
net.core.rps_sock_flow_entries
net.core.somaxconn 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。也就是服务端所能accept(socket编程中accpet()函数为建立TCP连接接受连接状态)即处理数据的最大客户端数量队列该值应当小于等于net.ipv4.tcp_max_syn_backlog
参数 net.core.warnings 已经不使用此参数
net.core.wmem_default 设置发送的socket缺省缓存大小(字节)
net.core.wmem_max 设置发送的socket最大缓存大小(字节) net.core.xfrm_acq_expires
net.core.xfrm_aevent_etime net.core.xfrm_aevent_rseqth
net.core.xfrm_larval_drop
net.ipv4.cipso_cache_bucket_size 限制cipso缓存项的数量,如果在缓存中新添加一行超出了这个限制,那么最旧的缓存项会被丢弃以释放出空间。
net.ipv4.cipso_cache_enable 是否启用cipso缓存。 0:不启用 1:启用
net.ipv4.cipso_rbm_optfmt 是否开启cipso标志优化选项,如果开启,数据包中标志将会在32bit对齐 0:关闭
1:开启 net.ipv4.cipso_rbm_strictvalid 是否开启cipso选项的严格检测 0:不开启 1:开启
net.ipv4.conf.all.accept_local 设置是否允许接收从本机IP地址上发送给本机的数据包 0:不允许 1:允许
net.ipv4.conf.all.accept_redirects 收发接收ICMP重定向消息。对于主机来说默认为True,对于用作路由器时默认值为False
0:禁止 1:允许
net.ipv4.conf.all.accept_source_route 接收带有SRR选项的数据报。主机设为0,路由设为1
net.ipv4.conf.all.arp_accept 默认对不在ARP表中的IP地址发出的APR包的处理方式
0:不在ARP表中创建对应IP地址的表项 1:在ARP表中创建对应IP地址的表项
net.ipv4.conf.all.arp_announce 对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制:
确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口 0: 在任意网络接口(eth0,eth1,lo)上的任何本地地址
1:尽量避免不在该网络接口子网段的本地地址做出arp回应.
当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2:对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址.
如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
net.ipv4.conf.all.arp_filter
0:内核设置每个网络接口各自应答其地址上的arp询问。这项看似会错误的设置却经常能非常有效,因为它增加了成功通讯的机会。在Linux主机上,每个IP地址是网络接口独立的,而非一个复合的接口。只有在一些特殊的设置的时候,比如负载均衡的时候会带来麻烦。
1:允许多个网络介质位于同一子网段内,每个网络界面依据是否内核指派路由该数据包经过此接口来确认是否回答ARP查询(这个实现是由来源地址确定路由的时候决定的),换句话说,允许控制使用某一块网卡(通常是第一块)回应arp询问。
net.ipv4.conf.all.arp_ignore 定义对目标地址为本地IP的ARP询问不同的应答模式
0:回应任何网络接口上对任何本地IP地址的arp查询请求 1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3:不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应 8:不回应所有(本地地址)的arp查询
net.ipv4.conf.all.arp_notify arp通知链操作 0:不做任何操作
1:当设备或硬件地址改变时自动产生一个arp请求
net.ipv4.conf.all.bootp_relay 接收源地址为0.a.b.c,目的地址不是本机的数据包,是为了支持bootp服务
0:关闭 1:开启 net.ipv4.conf.all.disable_policy 禁止internet协议安全性验证 0:禁止禁止
1:开启禁止 net.ipv4.conf.all.disable_xfrm 禁止internet协议安全性加密 0:禁止禁止 1:开启禁止
net.ipv4.conf.all.force_igmp_version
net.ipv4.conf.all.forwarding 在该接口打开转发功能 0:禁止 1:允许
net.ipv4.conf.all.log_martians 记录带有不允许的地址的数据报到内核日志中。 0:禁止 1:允许
net.ipv4.conf.all.mc_forwarding 是否进行多播路由。只有内核编译有CONFIG_MROUTE并且有路由服务程序在运行该参数才有效。
0:禁止 1:允许
net.ipv4.conf.all.medium_id 通常,这个参数用来区分不同媒介.两个网络设备可以使用不同的值,使他们只有其中之一接收到广播包.通常,这个参数被用来配合proxy_arp实现roxy_arp的特性即是允许arp报文在两个不同的网络介质中转发.
0:表示各个网络介质接受他们自己介质上的媒介
-1:表示该媒介未知。 net.ipv4.conf.all.promote_secondaries 0:当接口的主IP地址被移除时,删除所有次IP地址 1:当接口的主IP地址被移除时,将次IP地址提升为主IP地址
net.ipv4.conf.all.proxy_arp 打开arp代理功能。 0:禁止 1:允许
net.ipv4.conf.all.proxy_arp_pvlan 回应代理ARP的数据包从接收到此代理ARP请求的网络接口出去。
net.ipv4.conf.all.route_localnet net.ipv4.conf.all.rp_filter
1:通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项。
0:不通过反向路径回溯进行源地址验证。
net.ipv4.conf.all.secure_redirects 仅仅接收发给默认网关列表中网关的ICMP重定向消息 0:禁止 1:允许
net.ipv4.conf.all.send_redirects 允许发送重定向消息。(路由使用) 0:禁止 1:允许
net.ipv4.conf.all.shared_media 发送或接收RFC1620
共享媒体重定向。会覆盖ip_secure_redirects的值。 0:禁止 1:允许
net.ipv4.conf.all.src_valid_mark net.ipv4.conf.all.tag
net.ipv4.conf.{网络接口}.accept_local 设置是否允许接收从本机IP地址上发送给本机的数据包 0:不允许 1:允许
net.ipv4.conf.{网络接口}.accept_redirects 收发接收ICMP重定向消息。对于主机来说默认为True,对于用作路由器时默认值为False
0:禁止 1:允许
net.ipv4.conf.{网络接口}.accept_source_route 接收带有SRR选项的数据报。主机设为0,路由设为1
net.ipv4.conf.{网络接口}.arp_accept 默认对不在ARP表中的IP地址发出的APR包的处理方式
0:不在ARP表中创建对应IP地址的表项 1:在ARP表中创建对应IP地址的表项
net.ipv4.conf.{网络接口}.arp_announce 对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制:
确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口 0: 在任意网络接口(eth0,eth1,lo)上的任何本地地址
1:尽量避免不在该网络接口子网段的本地地址做出arp回应.
当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2:对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址.
如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
net.ipv4.conf.{网络接口}.arp_filter 0:内核设置每个网络接口各自应答其地址上的arp询问。这项看似会错误的设置却经常能非常有效,因为它增加了成功通讯的机会。在Linux主机上,每个IP地址是网络接口独立的,而非一个复合的接口。只有在一些特殊的设置的时候,比如负载均衡的时候会带来麻烦。
1:允许多个网络介质位于同一子网段内,每个网络界面依据是否内核指派路由该数据包经过此接口来确认是否回答ARP查询(这个实现是由来源地址确定路由的时候决定的),换句话说,允许控制使用某一块网卡(通常是第一块)回应arp询问。
net.ipv4.conf.{网络接口}.arp_ignore 定义对目标地址为本地IP的ARP询问不同的应答模式
0:回应任何网络接口上对任何本地IP地址的arp查询请求 1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3:不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应 8:不回应所有(本地地址)的arp查询
net.ipv4.conf.{网络接口}.arp_notify arp通知链操作 0:不做任何操作
1:当设备或硬件地址改变时自动产生一个arp请求
net.ipv4.conf.{网络接口}.bootp_relay 接收源地址为0.a.b.c,目的地址不是本机的数据包,是为了支持bootp服务
0:关闭 1:开启 net.ipv4.conf.{网络接口}.disable_policy 禁止internet协议安全性验证 0:禁止禁止
1:开启禁止 net.ipv4.conf.{网络接口}.disable_xfrm 禁止internet协议安全性加密 0:禁止禁止
1:开启禁止 net.ipv4.conf.{网络接口}.force_igmp_version
net.ipv4.conf.{网络接口}.forwarding 在该接口打开转发功能 0:禁止 1:允许
net.ipv4.conf.{网络接口}.log_martians 记录带有不允许的地址的数据报到内核日志中。 0:禁止 1:允许
net.ipv4.conf.{网络接口}.mc_forwarding 是否进行多播路由。只有内核编译有CONFIG_MROUTE并且有路由服务程序在运行该参数才有效。
0:禁止 1:允许
net.ipv4.conf.{网络接口}.medium_id 通常,这个参数用来区分不同媒介.两个网络设备可以使用不同的值,使他们只有其中之一接收到广播包.通常,这个参数被用来配合proxy_arp实现roxy_arp的特性即是允许arp报文在两个不同的网络介质中转发.
0:表示各个网络介质接受他们自己介质上的媒介
-1:表示该媒介未知。 net.ipv4.conf.{网络接口}.promote_secondaries 0:当接口的主IP地址被移除时,删除所有次IP地址
1:当接口的主IP地址被移除时,将次IP地址提升为主IP地址
net.ipv4.conf.{网络接口}.proxy_arp 打开arp代理功能。 0:禁止 1:允许
net.ipv4.conf.{网络接口}.proxy_arp_pvlan 回应代理ARP的数据包从接收到此代理ARP请求的网络接口出去。
net.ipv4.conf.{网络接口}.route_localnet
net.ipv4.conf.{网络接口}.rp_filter 1:通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项。
0:不通过反向路径回溯进行源地址验证。
net.ipv4.conf.{网络接口}.secure_redirects 仅仅接收发给默认网关列表中网关的ICMP重定向消息 0:禁止
1:允许 net.ipv4.conf.{网络接口}.send_redirects 允许发送重定向消息。(路由使用) 0:禁止 1:允许
net.ipv4.conf.{网络接口}.shared_media 发送或接收RFC1620
共享媒体重定向。会覆盖ip_secure_redirects的值。 0:禁止 1:允许
net.ipv4.conf.{网络接口}.src_valid_mark net.ipv4.conf.{网络接口}.tag
net.ipv4.conf.default.accept_local 设置是否允许接收从本机IP地址上发送给本机的数据包 0:不允许
1:允许
net.ipv4.conf.default.accept_redirects 收发接收ICMP重定向消息。对于主机来说默认为True,对于用作路由器时默认值为False
0:禁止 1:允许
net.ipv4.conf.default.accept_source_route 接收带有SRR选项的数据报。主机设为0,路由设为1
net.ipv4.conf.default.arp_accept 默认对不在ARP表中的IP地址发出的APR包的处理方式
0:不在ARP表中创建对应IP地址的表项 1:在ARP表中创建对应IP地址的表项
net.ipv4.conf.default.arp_announce 对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制:
确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口 0: 在任意网络接口(eth0,eth1,lo)上的任何本地地址
1:尽量避免不在该网络接口子网段的本地地址做出arp回应.
当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2:对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址.
如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
net.ipv4.conf.default.arp_filter 0:内核设置每个网络接口各自应答其地址上的arp询问。这项看似会错误的设置却经常能非常有效,因为它增加了成功通讯的机会。在Linux主机上,每个IP地址是网络接口独立的,而非一个复合的接口。只有在一些特殊的设置的时候,比如负载均衡的时候会带来麻烦。
1:允许多个网络介质位于同一子网段内,每个网络界面依据是否内核指派路由该数据包经过此接口来确认是否回答ARP查询(这个实现是由来源地址确定路由的时候决定的),换句话说,允许控制使用某一块网卡(通常是第一块)回应arp询问。
net.ipv4.conf.default.arp_ignore 定义对目标地址为本地IP的ARP询问不同的应答模式
0:回应任何网络接口上对任何本地IP地址的arp查询请求 1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3:不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应 8:不回应所有(本地地址)的arp查询
net.ipv4.conf.default.arp_notify arp通知链操作 0:不做任何操作
1:当设备或硬件地址改变时自动产生一个arp请求
net.ipv4.conf.default.bootp_relay 接收源地址为0.a.b.c,目的地址不是本机的数据包,是为了支持bootp服务
0:关闭 1:开启 net.ipv4.conf.default.disable_policy 禁止internet协议安全性验证
0:禁止禁止 1:开启禁止 net.ipv4.conf.default.disable_xfrm 禁止internet协议安全性加密
0:禁止禁止 1:开启禁止 net.ipv4.conf.default.force_igmp_version
net.ipv4.conf.default.forwarding 在该接口打开转发功能 0:禁止 1:允许
net.ipv4.conf.default.log_martians 记录带有不允许的地址的数据报到内核日志中。 0:禁止 1:允许
net.ipv4.conf.default.mc_forwarding 是否进行多播路由。只有内核编译有CONFIG_MROUTE并且有路由服务程序在运行该参数才有效。
0:禁止 1:允许
net.ipv4.conf.default.medium_id 通常,这个参数用来区分不同媒介.两个网络设备可以使用不同的值,使他们只有其中之一接收到广播包.通常,这个参数被用来配合proxy_arp实现roxy_arp的特性即是允许arp报文在两个不同的网络介质中转发.
0:表示各个网络介质接受他们自己介质上的媒介
-1:表示该媒介未知。 net.ipv4.conf.default.promote_secondaries 0:当接口的主IP地址被移除时,删除所有次IP地址 1:当接口的主IP地址被移除时,将次IP地址提升为主IP地址
net.ipv4.conf.default.proxy_arp 打开arp代理功能。 0:禁止 1:允许
net.ipv4.conf.default.proxy_arp_pvlan 回应代理ARP的数据包从接收到此代理ARP请求的网络接口出去。
net.ipv4.conf.default.route_localnet
net.ipv4.conf.default.rp_filter 1:通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项。
0:不通过反向路径回溯进行源地址验证。
net.ipv4.conf.default.secure_redirects 仅仅接收发给默认网关列表中网关的ICMP重定向消息 0:禁止
1:允许 net.ipv4.conf.default.send_redirects 允许发送重定向消息。(路由使用) 0:禁止 1:允许
net.ipv4.conf.default.shared_media 发送或接收RFC1620
共享媒体重定向。会覆盖ip_secure_redirects的值。 0:禁止 1:允许
net.ipv4.conf.default.src_valid_mark net.ipv4.conf.default.tag
net.ipv4.icmp_echo_ignore_all 忽略所有接收到的icmp echo请求的包(会导致机器无法ping通)
0:不忽略 1:忽略 net.ipv4.icmp_echo_ignore_broadcasts 忽略所有接收到的icmp echo请求的广播
0:不忽略 1:忽略 net.ipv4.icmp_errors_use_inbound_ifaddr 当前为 ICMP
错误消息选择源地址的方式,是使用存在的接口地址 1:表示内核通过这个选项允许使用接收到造成这一错误的报文的接口的地址
net.ipv4.icmp_ignore_bogus_error_responses 某些路由器违背RFC1122标准,其对广播帧发送伪造的响应来应答。这种违背行为通常会被以警告的方式记录在系统日志中。开启恶意icmp错误消息保护
0:记录到系统日志中 1:忽略
net.ipv4.icmp_ratelimit 限制发向特定目标的匹配icmp_ratemask的ICMP数据报的最大速率。配合icmp_ratemask使用。
0:没有任何限制
>0:表示指定时间内中允许发送的个数。(以jiffies为单位) net.ipv4.icmp_ratemask 在这里匹配的ICMP被icmp_ratelimit参数限制速率. 匹配的标志位:
IHGFEDCBA9876543210 默认的掩码值: 0000001100000011000 (6168) 0 Echo Reply 3
Destination Unreachable * 4 Source Quench * 5 Redirect 8 Echo Request
B Time Exceeded * C Parameter Problem * D Timestamp Request E
Timestamp Reply F Info Request G Info Reply H Address Mask Request I
Address Mask Reply
*号的被默认限速 net.ipv4.igmp_max_memberships 限制加入一个多播组的最大成员数. net.ipv4.igmp_max_msf 限制多播源地址过滤数量. net.ipv4.igmp_qrv
net.ipv4.inet_peer_maxttl 条目的最大存活期。在此期限到达之后,如果缓冲池没有耗尽压力的话(例如:缓冲池中的条目数目非常少),不使用的条目将会超时。该值以
jiffies为单位测量。
net.ipv4.inet_peer_minttl 条目的最低存活期。在重组端必须要有足够的碎片(fragment)存活期。这个最低存活期必须保证缓冲池容积是否少于
inet_peer_threshold。该值以 jiffies为单位测量。
net.ipv4.inet_peer_threshold INET对端存储器某个合适值,当超过该阀值条目将被丢弃。该阀值同样决定生存时间以及废物收集通过的时间间隔。条目越多,存活期越低,GC
间隔越短。 net.ipv4.ip_default_ttl 该文件表示一个数据报的生存周期(Time To
Live),即最多经过多少路由器。
net.ipv4.ip_dynaddr 拨号上网大部分都是使用动态IP地址,我们不知道远程拨号服务器的IP地址是多少,也不可能知道它会给电脑分配什么IP地址
0:使用静态IP 1:使用动态IP地址 net.ipv4.ip_early_demux
net.ipv4.ip_forward 是否打开ipv4的IP转发。 0:禁止 1:打开
net.ipv4.ip_forward_use_pmtu
net.ipv4.ipfrag_high_thresh 表示用于重组IP分段的内存分配最高值,一旦达到最高内存分配值,其它分段将被丢弃,直到达到最低内存分配值。
net.ipv4.ipfrag_low_thresh 表示用于重组IP分段的内存分配最低值
net.ipv4.ipfrag_max_dist 相同的源地址ip碎片数据报的最大数量.
这个变量表示在ip碎片被添加到队列前要作额外的检查.如果超过定义的数量的ip碎片从一个相同源地址到达,那么假定这个队列的ip碎片有丢失,已经存在的ip碎片队列会被丢弃,如果为0关闭检查
net.ipv4.ipfrag_secret_interval hash表中ip碎片队列的重建延迟.(单位 秒)
net.ipv4.ipfrag_time 表示一个IP分段在内存中保留多少秒
net.ipv4.ip_local_port_range 本地发起连接时使用的端口范围,tcp初始化时会修改此值
net.ipv4.ip_local_reserved_ports
net.ipv4.ip_nonlocal_bind 允许进程绑定到非本地地址 0:禁止 1:允许
net.ipv4.ip_no_pmtu_disc 该文件表示在全局范围内关闭路径MTU探测功能。
net.ipv4.neigh.{网络接口}.anycast_delay 对相邻请求信息的回复的最大延迟时间(单位 秒)
net.ipv4.neigh.{网络接口}.app_solicit 在使用多播探测前,通过netlink发送到用户空间arp守护程序的最大探测数
net.ipv4.neigh.{网络接口}.base_reachable_time 一旦发现相邻记录,至少在一段介于
base_reachable_time/2和3base_reachable_time/2之间的随机时间内,该记录是有效的.
如果收到上层协议的肯定反馈, 那么记录的有效期将延长.(单位 秒)
net.ipv4.neigh.{网络接口}.base_reachable_time_ms 一旦发现相邻记录,至少在一段介于
base_reachable_time/2和3base_reachable_time/2之间的随机时间内,该记录是有效的.
如果收到上层协议的肯定反馈, 那么记录的有效期将延长.(单位 毫秒)
net.ipv4.neigh.{网络接口}.delay_first_probe_time 发现某个相邻层记录无效后,发出第一个探测要等待的时间。(单位
秒) net.ipv4.neigh.{网络接口}.gc_stale_time 决定检查一次相邻层记录的有效性的周期.
当相邻层记录失效时,将在给它发送数据前,再解析一次.(单位 秒)
net.ipv4.neigh.{网络接口}.locktime 防止相邻记录被过度频繁刷新,引起抖动,只有距邻居上次刷新时间超过这时才允许被再次刷新.(单位 秒) net.ipv4.neigh.{网络接口}.mcast_solicit 在把记录标记为不可达之前,
用多播/广播方式解析地址的最大次数.
net.ipv4.neigh.{网络接口}.proxy_delay 当接收到有一个arp请求时,在回应前可以延迟的时间,这个请求是要得到一个已知代理arp项的地址.(单位
百毫秒) net.ipv4.neigh.{网络接口}.proxy_qlen 能放入代理 ARP 地址队列的数据包最大数目.
net.ipv4.neigh.{网络接口}.retrans_time 重发一个arp请求前的等待的秒数
net.ipv4.neigh.{网络接口}.retrans_time_ms 重发一个arp请求前的等待的毫秒数
net.ipv4.neigh.{网络接口}.ucast_solicit arp请求最多发送次数
net.ipv4.neigh.{网络接口}.unres_qlen 最大挂起arp请求的数量,这些请求都正在被解析中.
net.ipv4.neigh.{网络接口}.unres_qlen_bytes 最大处理arp包的字节数
net.ipv4.neigh.default.anycast_delay 对相邻请求信息的回复的最大延迟时间(单位 秒)
net.ipv4.neigh.default.app_solicit 在使用多播探测前,通过netlink发送到用户空间arp守护程序的最大探测数
net.ipv4.neigh.default.base_reachable_time 一旦发现相邻记录,至少在一段介于
base_reachable_time/2和3base_reachable_time/2之间的随机时间内,该记录是有效的.
如果收到上层协议的肯定反馈, 那么记录的有效期将延长.(单位 秒)
net.ipv4.neigh.default.base_reachable_time_ms 一旦发现相邻记录,至少在一段介于
base_reachable_time/2和3base_reachable_time/2之间的随机时间内,该记录是有效的.
如果收到上层协议的肯定反馈, 那么记录的有效期将延长.(单位 毫秒)
net.ipv4.neigh.default.delay_first_probe_time 发现某个相邻层记录无效后,发出第一个探测要等待的时间。(单位
秒) net.ipv4.neigh.default.gc_interval 垃圾收集器收集相邻层记录和无用记录的运行周期(单位 秒)
net.ipv4.neigh.default.gc_stale_time 决定检查一次相邻层记录的有效性的周期.
当相邻层记录失效时,将在给它发送数据前,再解析一次.(单位 秒)
net.ipv4.neigh.default.gc_thresh1 存在于ARP高速缓存中的最少个数,如果少于这个数,垃圾收集器将不会运行
net.ipv4.neigh.default.gc_thresh2 保存在 ARP 高速缓存中的最多的记录软限制.
垃圾收集器在开始收集前,允许记录数超过这个数字,在创建新表项时如果发现5秒没有刷新过,那么进行强制回收
net.ipv4.neigh.default.gc_thresh3 保存在 ARP 高速缓存中的最多记录的硬限制,
一旦高速缓存中的数目高于此, 垃圾收集器将马上运行
net.ipv4.neigh.default.locktime 防止相邻记录被过度频繁刷新,引起抖动,只有距邻居上次刷新时间超过这时才允许被再次刷新.(单位
秒) net.ipv4.neigh.default.mcast_solicit 在把记录标记为不可达之前,
用多播/广播方式解析地址的最大次数.
net.ipv4.neigh.default.proxy_delay 当接收到有一个arp请求时,在回应前可以延迟的时间,这个请求是要得到一个已知代理arp项的地址.(单位
百毫秒) net.ipv4.neigh.default.proxy_qlen 能放入代理 ARP 地址队列的数据包最大数目.
net.ipv4.neigh.default.retrans_time 重发一个arp请求前的等待的秒数
net.ipv4.neigh.default.retrans_time_ms 重发一个arp请求前的等待的毫秒数
net.ipv4.neigh.default.ucast_solicit arp请求最多发送次数
net.ipv4.neigh.default.unres_qlen 最大挂起arp请求的数量,这些请求都正在被解析中.
net.ipv4.neigh.default.unres_qlen_bytes 最大处理arp包的字节数
net.ipv4.ping_group_range
net.ipv4.route.error_burst 这个参数和error_cast一起用于限制有多少个icmp不可达消息被发送.当数据包不能到达下一跳时会发送icmp不可达数据包.
当一些主机忽略我们的icmp重定向消息时也会打印一些错误信息到dmesg.这个选项也控制打印的次数.(单位 秒)
net.ipv4.route.error_cost 这个参数和error_burst一起用于限制有多少个icmp不可达消息被发送.当数据包不能到达下一跳时会发送icmp不可达数据包.
当一些主机忽略我们的icmp重定向消息时也会打印一些错误信息到dmesg.这个选项也控制打印的次数.
error_cost值越大,那么icmp不可达和写错误信息的频率就越低.(单位 秒)
net.ipv4.route.flush 写这个文件就会刷新路由高速缓冲.
net.ipv4.route.gc_elasticity 用来控制路由缓存垃圾回收机制的频率和行为.当路由表一个hash项的长度超过此值时,会进行缓存缩减,当路由缓存项长度超过
ip_rt_gc_elasticity << rt_hash_log(表示路由高速缓存hash table的容量以2为对数所得的值)
时会进行强烈的回收. net.ipv4.route.gc_interval 此参数定义了路由表垃圾回收的间隔(秒)
net.ipv4.route.gc_min_interval 已不再使用,并被gc_min_interval_ms取代
net.ipv4.route.gc_min_interval_ms 此参数定义了路由表垃圾回收的最小间隔(ms)
net.ipv4.route.gc_thresh 路由hash table的大小,当cache中的路由条数超过此值时,开始垃圾回收.
net.ipv4.route.gc_timeout 设置一个路由表项的过期时长(秒).
net.ipv4.route.max_size 路由高速缓存的最大项数,超过会进行清除旧项操作.
net.ipv4.route.min_adv_mss 该文件表示最小的MSS(Maximum Segment
Size)大小,取决于第一跳的路由器MTU。(以字节为单位)
net.ipv4.route.min_pmtu 该文件表示最小路径MTU的大小。
net.ipv4.route.mtu_expires 该文件表示PMTU信息缓存多长时间(秒)。
net.ipv4.route.redirect_load 决定是否要向特定主机发送更多的ICMP重定向的时间因子.一旦达到load时间或number个数就不再发送.
net.ipv4.route.redirect_number 决定是否要向特定主机发送更多的ICMP重定向的数量因子.一旦达到load时间或number个数就不再发送.
net.ipv4.route.redirect_silence 重定向的超时.经过这么长时间后,重定向会重发,而不管是否已经因为超过load或者number限制而停止.
net.ipv4.tcp_abort_on_overflow 守护进程太忙而不能接受新的连接,就向对方发送reset消息 0:关闭 1:开启
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 <= 0)。 net.ipv4.tcp_allowed_congestion_control 列出了tcp目前允许使用的拥塞控制算法,只能在下面可用的算法中选择.
net.ipv4.tcp_app_win 保留max(window/2^tcp_app_win,mss)数量的窗口用于应用缓冲。当为0时表示不需要缓冲。
net.ipv4.tcp_available_congestion_control 列出了tcp目前可以使用的拥塞控制算法.
net.ipv4.tcp_base_mss tcp探察路径上mtu的最低边界限制, mss TCP头部 TCP选项 IP头+IP选项.
net.ipv4.tcp_challenge_ack_limit
net.ipv4.tcp_congestion_control 当前正在使用的拥塞控制算法.
net.ipv4.tcp_dsack 表示是否允许TCP发送“两个完全相同”的SACK。 0:禁止 1:启用
net.ipv4.tcp_early_retrans net.ipv4.tcp_ecn 表示是否打开TCP的直接拥塞通告功能。 0:禁止
1:启用 net.ipv4.tcp_fack 表示是否打开FACK拥塞避免和快速重传功能。 0:禁止 1:打开
net.ipv4.tcp_fastopen net.ipv4.tcp_fastopen_key
net.ipv4.tcp_fin_timeout 本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为60 秒。过去在2.2版本的内核中是 180秒。您可以设置该值,但需要注意,如果您的机器为负载很重的web服务器,您可能要冒内存被大量无效数据报填满的风险,FIN-WAIT-2
sockets 的危险性低于 FIN-WAIT-1,因为它们最多只吃 1.5K 的内存,但是它们存在时间更长。
net.ipv4.tcp_frto
net.ipv4.tcp_keepalive_intvl 表示发送TCP探测的频率,乘以tcp_keepalive_probes表示断开没有相应的TCP连接的时间。单位秒,前后探测报文之间的时间间隔
net.ipv4.tcp_keepalive_probes 该文件表示丢弃TCP连接前,进行最大TCP保持连接侦测的次数。保持连接仅在SO_KEEPALIVE套接字选项被打开时才被发送。探测次数
net.ipv4.tcp_keepalive_time 表示从最后一个包结束后多少秒内没有活动,才发送keepalive包保持连接,默认7200s,理想可设为1800s,即如果非正常断开,1800s后可通过keepalive知道。单位秒,表示TCP连接在多少秒没有数据报文传输时启动探测报文,探测连接是否正常
net.ipv4.tcp_limit_output_bytes net.ipv4.tcp_low_latency 允许 TCP/IP
栈适应在高吞吐量情况下低延时的情况;这个选项一般情形是的禁用。(但在构建Beowulf 集群的时候,打开它很有帮助) 0:关闭 1:开启
net.ipv4.tcp_max_orphans 系统所能处理不属于任何进程的TCP
sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的
DoS 攻击,千万不要依赖这个或是人为的降低这个限制。 net.ipv4.tcp_max_ssthresh
net.ipv4.tcp_max_syn_backlog 对于那些依然还未获得客户端确认的连接请求,需要保存在队列中最大数目。默认值是1024,表示SYN队列的长度。
net.ipv4.tcp_max_tw_buckets 系统在同时所处理的最大timewait sockets
数目。如果超过此数的话,time-wait socket 会被立即砍除并且显示警告信息。
net.ipv4.tcp_mem 指定TCP内存的整体使用状况,单位为页 该三个值,分别是
low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。
presure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。
high:允许所有tcp sockets用于排队缓冲数据报的页面量。 net.ipv4.tcp_min_tso_segs
net.ipv4.tcp_moderate_rcvbuf 接收数据时是否调整接收缓存 0:不调整 1:调整
net.ipv4.tcp_mtu_probing 是否开启tcp层路径mtu发现,自动调整tcp窗口等信 0:关闭 1:开启
net.ipv4.tcp_no_metrics_save 如果开启,tcp会在连接关闭时也就是LAST_ACK状态保存各种连接信息到路由缓存中,新建立的连接可以使用这些条件来初始化.。通常这会增加总体的系统性能,但是有些时候也会引起性能下降. 0:关闭 1:开启
net.ipv4.tcp_orphan_retries 针对孤立的socket(也就是已经从进程上下文中删除了,可是还有一些清理工作没有完成).在丢弃TCP连接之前重试的最大的次数
net.ipv4.tcp_reordering TCP流中重排序的数据报最大数量。
net.ipv4.tcp_retrans_collapse 对于某些有bug的打印机提供针对其bug的兼容性。 0:不启用 1:启用
net.ipv4.tcp_retries1 该文件表示放弃回应一个TCP连接请求前进行重传的次数。(大量的SYN出现有两种情况,可能是攻击,也可能是正常的业务请求,无论哪种,都大量的占用了服务器资源)
net.ipv4.tcp_retries2 该文件表示放弃在已经建立通讯状态下的一个TCP数据包前进行重传的次数。活动TCP连接重传次数,超过次数视为掉线,放弃连接 net.ipv4.tcp_rfc1337 这个开关可以启动对于在RFC1337中描述的"tcp
的time-wait暗杀危机"问题的修复。启用后,内核将丢弃那些发往time-wait状态TCP套接字的RST 包. 0:关闭 1:开启
net.ipv4.tcp_rmem 此文件中保存有三个值 ,分别是 Min:为TCP socket预留用于接收缓冲的内存最小值。每个tcp
socket都可以在建立后使用它。即使在内存出现紧张情况下tcp socket都至少会有这么多数量的内存用于接收缓冲
Default:为TCP
socket预留用于接收缓冲的内存数量,默认情况下该值会影响其它协议使用的net.core.rmem_default
值,一般要低于net.core.rmem_default的值。该值决定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win=0默认值情况下,TCP窗口大小为65535。
Max:用于TCP
socket接收缓冲的内存最大值。该值不会影响net.core.rmem_max,"静态"选择参数SO_SNDBUF则不受该值影响。
net.ipv4.tcp_sack 表示是否启用有选择的应答(Selective
Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对
CPU 的占用。 0:不启用 1:启用
net.ipv4.tcp_slow_start_after_idle 如果设置满足RFC2861定义的行为,在从新开始计算拥塞窗口前延迟一些时间,这延迟的时间长度由当前rto决定.
0:关闭 1:开启 net.ipv4.tcp_stdurg 使用 TCP urg pointer
字段中的主机请求解释功能。大部份的主机都使用老旧的BSD解释,因此如果您在 Linux 打开它,或会导致不能和它们正确沟通。 0:关闭
1:打开 net.ipv4.tcp_synack_retries 对于远端的连接请求SYN,内核会发送SYN +
ACK数据报,以确认收到上一个 SYN连接请求包。 这是所谓的三次握手.这里决定内核在放弃连接之前所送出的 SYN ACK 数目.
net.ipv4.tcp_syncookies 表示是否打开TCP同步标签(syncookie),同步标签(syncookie)可以防止一个套接字在有过多试图连接到达时引起过载。(启用cookies来处理,可以防范少量的SYN攻击)
0:关闭 1:打开
net.ipv4.tcp_syn_retries 表示本机向外发起TCP SYN连接超时重传的次数,不应该高于255;该值仅仅针对外出的连接,对于进来的连接由tcp_retries1控制。重试的间隔时间从1s开始每次都翻倍(因为隔一秒重试后还会等待响应,因此实际上是从3秒开始),5次的重试时间间隔为3s,7s, 15s, 31s, 63s,总共63s,TCP才会把断开这个连接。统计成公式2^(n 1) - 1
net.ipv4.tcp_thin_dupack net.ipv4.tcp_thin_linear_timeouts
net.ipv4.tcp_timestamps 表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来启用对 RTT
的计算;为了实现更好的性能应该启用这个选项。 0:不启用 1:启用
net.ipv4.tcp_tso_win_divisor 控制根据拥塞窗口的百分比,是否来发送相应的延迟tso frame 0:关闭
>0:值越大表示tso frame延迟发送可能越小. net.ipv4.tcp_tw_recycle 打开快速 TIME-WAIT
sockets 回收。除非得到技术专家的建议或要求,请不要随意修改这个值。
net.ipv4.tcp_tw_reuse 表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。 0:关闭
1:打开 net.ipv4.tcp_window_scaling 表示设置tcp/ip会话的滑动窗口大小是否可变。 0:不可变 1:可变
net.ipv4.tcp_wmem 此文件中保存有三个值,分别是 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则不受该值影响。
net.ipv4.tcp_workaround_signed_windows 0:假定远程连接端正常发送了窗口收缩选项,即使对端没有发送.
1:假定远程连接端有错误,没有发送相关的窗口缩放选项 net.ipv4.udp_mem 该文件保存了三个值,分别是
low:当UDP使用了低于该值的内存页面数时,UDP不会考虑释放内存。
presure:当UDP使用了超过该值的内存页面数量时,UDP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。
high:允许所有UDP sockets用于排队缓冲数据报的页面量。 net.ipv4.udp_rmem_min
net.ipv4.udp_wmem_min net.ipv4.xfrm4_gc_thresh
net.ipv6.bindv6only 默认监听ipv6端口(不管监听与否,都与是否关闭ipv4监听无关) 0:不监听 1:监听
net.ipv6.conf.all.accept_dad 0:取消DAD功能
1:启用DAD功能,但link-local地址冲突时,不关闭ipv6功能
2:启用DAD功能,但link-local地址冲突时,关闭ipv6功能
net.ipv6.conf.all.accept_ra 接受IPv6路由通告.并且根据得到的信息自动设定. 0:不接受路由通告
1:当forwarding禁止时接受路由通告 2:任何情况下都接受路由通告
net.ipv6.conf.all.accept_ra_defrtr 是否接受ipv6路由器发出的默认路由设置 0:不接受 1:接受
net.ipv6.conf.all.accept_ra_pinfo 当accept_ra开启时此选项会自动开启,关闭时则会关闭
net.ipv6.conf.all.accept_ra_rt_info_max_plen 在路由通告中路由信息前缀的最大长度。当
net.ipv6.conf.all.accept_ra_rtr_pref
net.ipv6.conf.all.accept_redirects 是否接受ICMPv6重定向包
0:拒绝接受ICMPv6,当forwarding=1时,此值会自动设置为0
1:启动接受ICMPv6,当forwarding=0时,此值会自动设置为1
net.ipv6.conf.all.accept_source_route 接收带有SRR选项的数据报。主机设为0,路由设为1
net.ipv6.conf.all.autoconf 设定本地连结地址使用L2硬件地址. 它依据界面的L2-MAC
address自动产生一个地址如:“fe80::201:23ff:fe45:6789”
net.ipv6.conf.all.dad_transmits 接口增加ipv6地址时,发送几次DAD包
net.ipv6.conf.all.disable_ipv6 是否禁用ipv6 0:不禁用 1:禁用
net.ipv6.conf.all.force_mld_version net.ipv6.conf.all.force_tllao
net.ipv6.conf.all.forwarding 所有网络接口开启ipv6转发 0:关闭 1:开启
net.ipv6.conf.all.hop_limit 缺省hop限制
net.ipv6.conf.all.max_addresses 所有网络接口自动配置IP地址的数量最大值 0:不限制 >0:最大值
net.ipv6.conf.all.max_desync_factor DESYNC_FACTOR的最大值,DESYNC_FACTOR是一个随机数,用于防止客户机在同一时间生成新的地址
net.ipv6.conf.all.mc_forwarding 是否使用多路广播进行路由选择,需要内核编译时开启了CONFIG_MROUTE选项并且开启了多路广播路由选择的后台daemon
0:关闭 1:开启
net.ipv6.conf.all.mldv1_unsolicited_report_interval 每次发送MLDv1的主动报告的时间间隔(ms)
net.ipv6.conf.all.mldv2_unsolicited_report_interval 每次发送MLDv2的主动报告的时间间隔(ms)
net.ipv6.conf.all.mtu ipv6的最大传输单元
net.ipv6.conf.all.ndisc_notify 如何向邻居设备通知地址和设备的改变 0:不通知
1:主动向邻居发送广播报告硬件地址或者设备发生了改变
net.ipv6.conf.all.optimistic_dad 是否启用optimistic DAD(乐观地进行重复地址检查) 0:关闭
1:开启
net.ipv6.conf.all.proxy_ndp 此功能类似于ipv4的nat,可将内网的包转发到外网,外网不能主动发给内网。
0:关闭 1:开启 net.ipv6.conf.all.regen_max_retry 尝试生成临时地址的次数
net.ipv6.conf.all.router_probe_interval 路由器探测间隔(秒)
net.ipv6.conf.all.router_solicitation_delay 在发送路由请求之前的等待时间(秒).
net.ipv6.conf.all.router_solicitation_interval 在每个路由请求之间的等待时间(秒).
net.ipv6.conf.all.router_solicitations 假定没有路由的情况下发送的请求个数
net.ipv6.conf.all.temp_prefered_lft
net.ipv6.conf.all.temp_valid_lft net.ipv6.conf.all.use_tempaddr
net.ipv6.conf.{网络接口}.accept_dad net.ipv6.conf.{网络接口}.accept_ra
net.ipv6.conf.{网络接口}.accept_ra_defrtr
net.ipv6.conf.{网络接口}.accept_ra_pinfo
net.ipv6.conf.{网络接口}.accept_ra_rt_info_max_plen
net.ipv6.conf.{网络接口}.accept_ra_rtr_pref
net.ipv6.conf.{网络接口}.accept_redirects
net.ipv6.conf.{网络接口}.accept_source_route 接收带有SRR选项的数据报。主机设为0,路由设为1
net.ipv6.conf.{网络接口}.autoconf net.ipv6.conf.{网络接口}.dad_transmits
net.ipv6.conf.{网络接口}.disable_ipv6
net.ipv6.conf.{网络接口}.force_mld_version
net.ipv6.conf.{网络接口}.force_tllao net.ipv6.conf.{网络接口}.forwarding
net.ipv6.conf.{网络接口}.hop_limit net.ipv6.conf.{网络接口}.max_addresses
net.ipv6.conf.{网络接口}.max_desync_factor
net.ipv6.conf.{网络接口}.mc_forwarding
net.ipv6.conf.{网络接口}.mldv1_unsolicited_report_interval
net.ipv6.conf.{网络接口}.mldv2_unsolicited_report_interval
net.ipv6.conf.{网络接口}.mtu net.ipv6.conf.{网络接口}.ndisc_notify
net.ipv6.conf.{网络接口}.optimistic_dad net.ipv6.conf.{网络接口}.proxy_ndp
net.ipv6.conf.{网络接口}.regen_max_retry
net.ipv6.conf.{网络接口}.router_probe_interval
net.ipv6.conf.{网络接口}.router_solicitation_delay
net.ipv6.conf.{网络接口}.router_solicitation_interval
net.ipv6.conf.{网络接口}.router_solicitations
net.ipv6.conf.{网络接口}.temp_prefered_lft
net.ipv6.conf.{网络接口}.temp_valid_lft
net.ipv6.conf.{网络接口}.use_tempaddr net.ipv6.conf.default.accept_dad
net.ipv6.conf.default.accept_ra
net.ipv6.conf.default.accept_ra_defrtr
net.ipv6.conf.default.accept_ra_pinfo
net.ipv6.conf.default.accept_ra_rt_info_max_plen
net.ipv6.conf.default.accept_ra_rtr_pref
net.ipv6.conf.default.accept_redirects
net.ipv6.conf.default.accept_source_route 接收带有SRR选项的数据报。主机设为0,路由设为1
net.ipv6.conf.default.autoconf net.ipv6.conf.default.dad_transmits
net.ipv6.conf.default.disable_ipv6
net.ipv6.conf.default.force_mld_version
net.ipv6.conf.default.force_tllao net.ipv6.conf.default.forwarding
net.ipv6.conf.default.hop_limit net.ipv6.conf.default.max_addresses
net.ipv6.conf.default.max_desync_factor
net.ipv6.conf.default.mc_forwarding
net.ipv6.conf.default.mldv1_unsolicited_report_interval
net.ipv6.conf.default.mldv2_unsolicited_report_interval
net.ipv6.conf.default.mtu net.ipv6.conf.default.ndisc_notify
net.ipv6.conf.default.optimistic_dad
net.ipv6.conf.default.proxy_ndp
net.ipv6.conf.default.regen_max_retry
net.ipv6.conf.default.router_probe_interval
net.ipv6.conf.default.router_solicitation_delay
net.ipv6.conf.default.router_solicitation_interval
net.ipv6.conf.default.router_solicitations
net.ipv6.conf.default.temp_prefered_lft
net.ipv6.conf.default.temp_valid_lft
net.ipv6.conf.default.use_tempaddr net.ipv6.icmp.ratelimit
net.ipv6.ip6frag_high_thresh net.ipv6.ip6frag_low_thresh
net.ipv6.ip6frag_secret_interval net.ipv6.ip6frag_time
net.ipv6.mld_max_msf net.ipv6.mld_qrv
net.ipv6.neigh.{网络接口}.anycast_delay
net.ipv6.neigh.{网络接口}.app_solicit
net.ipv6.neigh.{网络接口}.base_reachable_time
net.ipv6.neigh.{网络接口}.base_reachable_time_ms
net.ipv6.neigh.{网络接口}.delay_first_probe_time
net.ipv6.neigh.{网络接口}.gc_stale_time net.ipv6.neigh.{网络接口}.locktime
net.ipv6.neigh.{网络接口}.mcast_solicit
net.ipv6.neigh.{网络接口}.proxy_delay net.ipv6.neigh.{网络接口}.proxy_qlen
net.ipv6.neigh.{网络接口}.retrans_time
net.ipv6.neigh.{网络接口}.retrans_time_ms
net.ipv6.neigh.{网络接口}.ucast_solicit
net.ipv6.neigh.{网络接口}.unres_qlen
net.ipv6.neigh.{网络接口}.unres_qlen_bytes net.ipv6.route.flush
net.ipv6.route.gc_elasticity net.ipv6.route.gc_interval
net.ipv6.route.gc_min_interval net.ipv6.route.gc_min_interval_ms
net.ipv6.route.gc_thresh net.ipv6.route.gc_timeout
net.ipv6.route.max_size net.ipv6.route.min_adv_mss
net.ipv6.route.mtu_expires net.ipv6.xfrm6_gc_thresh
net.netfilter.nf_conntrack_acct
net.netfilter.nf_conntrack_buckets 只读,描述当前系统的ip_conntrack的hash
table大小. net.netfilter.nf_conntrack_checksum 验证协议是否错误是,是否对协议进行校验和验证
0:关闭 1:开启 net.netfilter.nf_conntrack_count 内存中ip_conntrack结构的数量.
net.netfilter.nf_conntrack_events
net.netfilter.nf_conntrack_events_retry_timeout
net.netfilter.nf_conntrack_expect_max
net.netfilter.nf_conntrack_generic_timeout 通用或未知协议的conntrack被设置的超时时间(每次看到包都会用这值重新更新定时器),一旦时间到conntrack将被回收.(秒)
net.netfilter.nf_conntrack_helper
net.netfilter.nf_conntrack_icmp_timeout icmp协议的conntrack被设置的超时时间,一旦到时conntrack将被回收.(秒) net.netfilter.nf_conntrack_log_invalid 调试时使用,可以指定一个数字,这个数字是内核定义的协议号比如IPPROTO_TCP是6,当指定协议解析时发现一些错误包会打印相关的错误信息到dmesg中.
最小值0,最大值255,默认不打印.
net.netfilter.nf_conntrack_max 内存中最多ip_conntrack结构的数量.
net.netfilter.nf_conntrack_tcp_be_liberal 当开启只有不在tcp窗口内的rst包被标志为无效,当关闭(默认)所有不在tcp窗口中的包都被标志为无效.
0:关闭 1:开启 net.netfilter.nf_conntrack_tcp_loose 当想追踪一条已经连接的tcp会话,
在系统可以假设sync和window追逐已经开始后要求每个方向必须通过的包的数量. 如果为0,从不追踪一条已经连接的tcp会话.
net.netfilter.nf_conntrack_tcp_max_retrans 没有从目的端接收到一个ack而进行包重传的次数,一旦达到这限制nf_conntrack_tcp_timeout_max_retrans将作为ip_conntrack的超时限制.
net.netfilter.nf_conntrack_tcp_timeout_close TCP处于close状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_close_wait TCP处于close
wait状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_established TCP处于established状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_fin_wait TCP处于fin wait状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_last_ack TCP处于last ack状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_max_retrans TCP处于max
retrans状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_syn_recv TCP处于syn recv状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_syn_sent TCP处于syn sent状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_time_wait TCP处于time
wait状态超时时间(秒)
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged TCP处于unacknowledged状态超时时间(秒)
net.netfilter.nf_conntrack_timestamp
net.netfilter.nf_conntrack_udp_timeout udp协议的conntrack被设置的超时时间(每次看到包都会用这值重新更新定时器),一旦到时conntrack将被回收.(秒)
net.netfilter.nf_conntrack_udp_timeout_stream 当看到一些特殊的udp传输时(传输在双向)设置的ip_conntrack超时时间(每次看到包都会用这值重新更新定时器).(秒)
net.netfilter.nf_log.0 net.netfilter.nf_log.1
net.netfilter.nf_log.10 net.netfilter.nf_log.11
net.netfilter.nf_log.12 net.netfilter.nf_log.2
net.netfilter.nf_log.3 net.netfilter.nf_log.4
net.netfilter.nf_log.5 net.netfilter.nf_log.6
net.netfilter.nf_log.7 net.netfilter.nf_log.8
net.netfilter.nf_log.9 net.nf_conntrack_max 内存中最多ip_conntrack结构的数量.
net.unix.max_dgram_qlen 允许域套接字中数据包的最大个数,在初始化unix域套接字时的默认值.
在调用listen函数时第二个参数会复盖这个值.

四 文件系统参数列表 /proc/sys/fs/*

代码语言:javascript复制
// fs.aio-max-nr 最大允许aio请求数量(会涉及到数据库的aio请求) fs.aio-nr 当前aio请求数量
fs.binfmt_misc.qemu-alpha binfmt_misc用于支持当前芯片架构的系统是否支持通过qemu进行chroot到其他架构的根文件系统中进行操作。
fs.binfmt_misc.qemu-arm fs.binfmt_misc.qemu-armeb
fs.binfmt_misc.qemu-cris fs.binfmt_misc.qemu-i386
fs.binfmt_misc.qemu-i486 fs.binfmt_misc.qemu-m68k
fs.binfmt_misc.qemu-microblaze fs.binfmt_misc.qemu-microblazeel
fs.binfmt_misc.qemu-mips fs.binfmt_misc.qemu-mips64
fs.binfmt_misc.qemu-mips64el fs.binfmt_misc.qemu-mipsel
fs.binfmt_misc.qemu-s390x fs.binfmt_misc.qemu-sh4
fs.binfmt_misc.qemu-sh4eb fs.binfmt_misc.qemu-sparc
fs.binfmt_misc.qemu-sparc32plus fs.binfmt_misc.qemu-sparc64
fs.binfmt_misc.register 用于注册或修改以上的binfmt_misc,输入格式是
:name:type:offset:magic: mask:interpreter:flags 例:echo
‘:i386:M::x7fELFx01x00x00x00x00x00x00x00x00x00x00x00x02x00x03:
xffxffxffxffxffxfexfexffxffxffxffxffxffxffxffxffxfbxffxff:/bin/em86:’
> register
fs.binfmt_misc.status 设置binfmt_misc开启 0:禁止 1:开启
fs.dentry-state 保存目录缓存的状态,保存有六个值,只有前三个有效 nr_dentry:当前已经分配的目录项数量
nr_unused:还没有使用的目录项数量 age_limit:当内存紧缺时,延迟多少秒后会回收目录项所占内存
fs.dir-notify-enable 设置是否启用dnotify,已被inotify取代,因为dnotify
需要您为每个打算监控是否发生改变的目录打开一个文件描述符。当同时监控多个目录时,这会消耗大量的资源,因为有可能达到每个进程的文件描述符限制。并且不允许卸载(unmount)支持的设备
0:不使用 1:使用 fs.epoll.max_user_watches IO复用epoll监听文件句柄的数量最大值
fs.file-max 系统中所有进程能够同时打开的文件句柄(文件描述符)数量
fs.file-nr 此文件中保存了三个值,分别是:系统中已分配的文件句柄数量 已分配但没有使用的文件句柄数量 最大的文件句柄号
fs.inode-nr 此文件保存了两个值,是:已分配inode数 空闲inode数
fs.inode-state 此文件保存了三个值,前两个分别表示
已分配inode数和空闲inode数。第三个是已超出系统最大inode值的数量,此时系统需要清除排查inode列表
fs.inotify.max_queued_events inotify用于监控文件系统事件
该文件中的值为调用inotify_init函数时分配给inotify队列的事件数目的最大值,超出这个值得事件被丢弃,但会触发IN_Q_OVERFLOW事件
文件系统变化越频繁,这个值就应该越大
fs.inotify.max_user_instances 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数。
fs.inotify.max_user_watches 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)。
fs.lease-break-time 当进程尝试打开一个被租借锁保护的文件时,该进程会被阻塞,同时,在一定时间内拥有该文件租借锁的进程会收到一个信号。收到信号之后,拥有该文件租借锁的进程会首先更新文件,从而保证了文件内容的一致性,接着,该进程释放这个租借锁。如果拥有租借锁的进程在一定的时间间隔内没有完成工作,内核就会自动删除这个租借锁或者将该锁进行降级,从而允许被阻塞的进程继续工作。
此保存租借锁的超时时间(以秒为单位) fs.leases-enable 是否启用文件的租借锁 1:启用 0:不启用
fs.mqueue.msg_default POSIX的消息队列
此文件保存一个消息队列中消息数量的默认值,如果此值超过msg_max,则会被设置为msg_max
fs.mqueue.msg_max 一个消息队列的最大消息数
fs.mqueue.msgsize_default 消息队列中一个消息的默认大小(以字节为单位)
fs.mqueue.msgsize_max 消息队列中一个消息的最大大小(以字节为单位)
fs.mqueue.queues_max 系统中允许的消息队列的最大数量
fs.nfs.idmap_cache_timeout 设置idmapper缓存项的最大寿命,单位是秒
fs.nfs.nfs_callback_tcpport 设置NFSv4回复通道(callback channel)监听的TCP端口
fs.nfs.nfs_congestion_kb fs.nfs.nfs_mountpoint_timeout
fs.nfs.nlm_grace_period 参数设置服务器重新引导后客户机回收NFSv3锁和NFSv4锁所需的秒数。因此,grace_period的值可控制NFSv3和NFSv4的锁定恢复的宽延期长度。
fs.nfs.nlm_tcpport 为NFS锁管理器指定TCP端口
fs.nfs.nlm_timeout 为NFS锁管理器指定默认超时时间,单位是秒。默认值是10秒。取值范围在[3-20]
fs.nfs.nlm_udpport 为NFS锁管理器指定UDP端口 fs.nfs.nsm_local_state
fs.nfs.nsm_use_hostnames fs.nr_open 一个进程最多同时打开的文件句柄数量
fs.overflowgid Linux的GID为32位,但有些文件系统只支持16位的GID,此时若进行写操作会出错;当GID超过65535时会自动被转换为一个固定值,这个固定值保存在这个文件中
fs.overflowuid Linux的UID为32位,但有些文件系统只支持16位的UID,此时若进行写操作会出错;当UID超过65535时会自动被转换为一个固定值,这个固定值保存在这个文件中
fs.pipe-max-size 此文件限制非特权程序使用pipe时的缓存最大大小(以字节为单位,最小设置为4096)
fs.protected_hardlinks 用于限制普通用户建立硬链接 0:不限制用户建立硬链接
1:限制,如果文件不属于用户,或者用户对此用户没有读写权限,则不能建立硬链接
fs.protected_symlinks 用于限制普通用户建立软链接 0:不限制用户建立软链接 1:限制,允许用户建立软连接的情况是
软连接所在目录是全局可读写目录或者软连接的uid与跟从者的uid匹配,又或者目录所有者与软连接所有者匹配
fs.quota.allocated_dquots fs.quota.cache_hits fs.quota.drops
fs.quota.free_dquots fs.quota.lookups fs.quota.reads
fs.quota.syncs fs.quota.warnings fs.quota.writes
fs.suid_dumpable fscache.object_max_active
fscache.operation_max_active

六 常用内核优化

代码语言:javascript复制
vim /etc/sysctl.conf  #进入这个文件修改
sysctl -p   #让修改的内核信息生效

#################################################

fs.file-max = 999999
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 40960
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000



cat >> /etc/security/limits.conf << EOF
*                soft    core            unlimited
*                hard    core            unlimited
*                soft    nproc           1048576
*                hard    nproc           1048576
*                soft    nofile          1048576
*                hard    nofile          1048576
*                soft    memlock         unlimited
*                hard    memlock         unlimited
*                soft    msgqueue        unlimited
*                hard    msgqueue        unlimited
EOF

七 qilin系统原内核参数(重点几个)

代码语言:bash复制
cat >> /etc/sysctl.conf << EOF
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096
kernel.sem = 32000	1024000000	500	32000
fs.file-max = 9223372036854775807
net.ipv4.ip_local_port_range = 32768	60999
net.core.rmem_default = 2097152
net.core.wmem_default = 2097152
net.core.rmem_max = 2097152
#net.core.rmem_max =4194304
net.core.wmem_max = 2097152
EOF

修改好内核以后,执行下面的命令使新的配置生效。
 
[root @linux1 /root]# /sbin/sysctl -p

检验:
/sbin/sysctl -a | grep shm
kernel.shm_next_id = -1
kernel.shm_rmid_forced = 0
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096
vm.hugetlb_shm_group = 0


/sbin/sysctl -a | grep sem
kernel.sem = 32000	1024000000	500	32000
kernel.sem_next_id = -1

/sbin/sysctl -a | grep file-max
fs.file-max = 9223372036854775807


/sbin/sysctl -a | grep ip_local_port_range
net.ipv4.ip_local_port_range = 32768	609

0 人点赞