内核参数
abi.vsyscall32 = 1 在2.6.25版本以后的x86-64内核中,默认启用了VDSO32。
虚拟动态共享对象 http://man7.org/linux/man-pages/man7/vdso.7.html
1.通常情况下,每次请求会通过用户态调用内核态,从而发生一次系统调用。
2.内核态将动态共享对象映射至于用户态,用户态请求直接调用,从而减少系统调用,加快系统处理效率。
debug.exception-trace = 1
debug.kprobes-optimization = 1
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17
dev.cdrom.info =
dev.cdrom.info = drive name:
dev.cdrom.info = drive speed:
dev.cdrom.info = drive # of slots:
dev.cdrom.info = Can close tray:
dev.cdrom.info = Can open tray:
dev.cdrom.info = Can lock tray:
dev.cdrom.info = Can change speed:
dev.cdrom.info = Can select disk:
dev.cdrom.info = Can read multisession:
dev.cdrom.info = Can read MCN:
dev.cdrom.info = Reports media changed:
dev.cdrom.info = Can play audio:
dev.cdrom.info = Can write CD-R:
dev.cdrom.info = Can write CD-RW:
dev.cdrom.info = Can read DVD:
dev.cdrom.info = Can write DVD-R:
dev.cdrom.info = Can write DVD-RAM:
dev.cdrom.info = Can read MRW:
dev.cdrom.info = Can write MRW:
dev.cdrom.info = Can write RAM:
dev.cdrom.info =
dev.cdrom.info =
dev.cdrom.lock = 0
dev.hpet.max-user-freq = 64
dev.mac_hid.mouse_button2_keycode = 97
dev.mac_hid.mouse_button3_keycode = 100
dev.mac_hid.mouse_button_emulation = 0
dev.parport.default.spintime = 500
dev.parport.default.timeslice = 200
dev.raid.speed_limit_max = 200000
dev.raid.speed_limit_min = 1000
dev.scsi.logging_level = 0
##fs.aio-max-nr = 65536 //指的是可以同时拥有异步I/O请求的数目,Oracle推荐的值为1048576(1024×1024),也就是1024Kb个。
##fs.aio-nr = 0 //是在上指定的事件数的运行总计io_setup系统调用所有当前活动的aio上下文。如果aio-nr达到aio-max-nr,则io_setup将失败,并返回EAGAIN。
注意,提高aio-max-nr不会导致预分配或重新调整大小的任何内核数据结构。aio-nr显示当前系统范围的异步io请求数。aio-max-nr允许您更改aio-nr可以增长到的最大值。
fs.dentry-state = 449936 438574 //保存目录缓存的状态,保存有六个值,只有前三个有效
nr_dentry:当前已经分配的目录项数量
nr_unused:还没有使用的目录项数量
age_limit:当内存紧缺时,延迟多少秒后会回收目录项所占内存
fs.dir-notify-enable = 1 //设置是否启用dnotify,已被inotify取代,因为dnotify 需要您为每个打算监控是否发生改变的目录打开一个文件描述符。
当同时监控多个目录时,这会消耗大量的资源,因为有可能达到每个进程的文件描述符限制。并且不允许卸载(unmount)支持的设备 0:不使用 1:使用
##fs.epoll.max_user_watches = 415416 //IO复用epoll监听文件句柄的数量最大值
##fs.file-max = 1000000 /系统所有进程一共可以打开的文件数量 64bytes cat /proc/sys/fs/file-nr在'高负荷'的情况,看看有多少文件描述符都在使用。lsof
fs.file-nr = 1600 //此文件中保存了三个值,分别是:系统中已分配的文件句柄数量,已分配但没有使用的文件句柄数量,最大的文件句柄号
##fs.inode-nr = 536478 //此文件保存了两个值,是:已分配inode数,空闲inode数
fs.inode-state = 536478 182309 0 0 0 0 0 //此文件保存了三个值,前两个分别表示 已分配inode数和空闲inode数。
第三个是已超出系统最大inode值的数量,此时系统需要清除排查inode列表
fs.inotify.max_queued_events = 327679 //inotify用于监控文件系统事件,该文件中的值为调用inotify_init函数时分配给inotify队列的事件数目的最大值,
超出这个值得事件被丢弃,但会触发IN_Q_OVERFLOW事件文件系统变化越频繁,这个值就应该越大
fs.inotify.max_user_instances = 128 //设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
fs.inotify.max_user_watches = 10000000 //设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
fs.lease-break-time = 45 //当进程尝试打开一个被租借锁保护的文件时,该进程会被阻塞,同时,在一定时间内拥有该文件租借锁的进程会收到一个信号。收到信号之后,拥有该文件租借锁的进程会首先更新文件,从而保证了文件内容的一致性,接着,该进程释放这个租借锁。如果拥有租借锁的进程在一定的时间间隔内没有完成工作,内核就会自动删除这个租借锁或者将该锁进行降级,从而允许被阻塞的进程继续工作。此保存租借锁的超时时间(以秒为单位)
fs.leases-enable = 1 //是否启用文件的租借锁 1:启用 0:不启用
fs.mqueue.msg_default = 10 //POSIX的消息队列此文件保存一个消息队列中消息数量的默认值,如果此值超过msg_max,则会被设置为msg_max
fs.mqueue.msg_max = 10 //一个消息队列的最大消息数
fs.mqueue.msgsize_default = 8192//消息队列中一个消息的默认大小(以字节为单位)
fs.mqueue.msgsize_max = 8192 //消息队列中一个消息的最大大小(以字节为单位)
fs.mqueue.queues_max = 256 //系统中允许的消息队列的最大数量
fs.nr_open = 1048576 //一个进程最多同时打开的文件句柄数量
fs.overflowgid = 65534 //Linux的GID为32位,但有些文件系统只支持16位的GID,此时若进行写操作会出错;当GID超过65535时会自动被转换为一个固定值,这个固定值保存在这个文件中
fs.overflowuid = 65534 //Linux的UID为32位,但有些文件系统只支持16位的UID,此时若进行写操作会出错;当UID超过65535时会自动被转换为一个固定值,这个固定值保存在这个文件中
fs.pipe-max-size = 1048576 //此文件限制非特权程序使用pipe时的缓存最大大小(以字节为单位,最小设置为4096)
fs.protected_hardlinks = 1 //用于限制普通用户建立硬链接 0:不限制用户建立硬链接 1:限制,如果文件不属于用户,或者用户对此用户没有读写权限,则不能建立硬链接
fs.protected_symlinks = 1 //用于限制普通用户建立软链接
0:不限制用户建立软链接
1:限制,允许用户建立软连接的情况是 软连接所在目录是全局可读写目录或者软连接的uid与跟从者的uid匹配,又或者目录所有者与软连接所有者匹配
fs.quota.allocated_dquots = 0
fs.quota.cache_hits = 0
fs.quota.drops = 0
fs.quota.free_dquots = 0
fs.quota.lookups = 0
fs.quota.reads = 0
fs.quota.syncs = 6
fs.quota.writes = 0
fs.suid_dumpable = 2
fs.xfs.age_buffer_centisecs = 1500
fs.xfs.error_level = 3
fs.xfs.filestream_centisecs = 3000
fs.xfs.inherit_noatime = 1
fs.xfs.inherit_nodefrag = 1
fs.xfs.inherit_nodump = 1
fs.xfs.inherit_nosymlinks = 0
fs.xfs.inherit_sync = 1
fs.xfs.irix_sgid_inherit = 0
fs.xfs.irix_symlink_mode = 0
fs.xfs.panic_mask = 0
fs.xfs.rotorstep = 1
fs.xfs.speculative_prealloc_lifetime = 300
fs.xfs.stats_clear = 0
fs.xfs.xfsbufd_centisecs = 100
fs.xfs.xfssyncd_centisecs = 3000
##内核
kernel.acct = 4 30 acct功能用于系统记录进程信息,正常结束的进程都会在该文件尾添加对应的信息。异常结束是指重启或其它致命的系统问题,不能够记录永不停止的进程。该设置需要配置三个值,分别是:
1.如果文件系统可用空间低于这个百分比值,则停止记录进程信息。
2.如果文件系统可用空间高于这个百分比值,则开始记录进程信息。
3.检查上面两个值的频率(以秒为单位)。
kernel.acpi_video_flags = 0
kernel.auto_msgmni = 1 //系统自动设置同时运行的消息队列个数。 0:不自动 1:自动
kernel.blk_iopoll = 1
kernel.bootloader_type = 114
kernel.bootloader_version = 2
sysctl: permission denied on key 'kernel.cad_pid'
kernel.cap_last_cap = 36 //系统capabilities最高支持的权限等级。
kernel.compat-log = 1
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P //设置core文件保存位置或文件名,只有文件名时,则保存在应用程序运行的目录下
kernel.core_pipe_limit = 0 //定义了可以有多少个并发的崩溃程序可以通过管道模式传递给指定的core信息收集程序。如果超过了指定数,则后续的程序将不会处理,
只在内核日志中做记录。0是个特殊的值,当设置为0时,不限制并行捕捉崩溃的进程,但不会等待用户程序搜集完毕方才回收/proc/pid目录(就是说,崩溃程序的相关信息可能随时被回收,搜集的信息可能不全)。
kernel.core_uses_pid = 1 //Core文件的文件名是否添加应用程序pid做为扩展 0:不添加 1:添加
kernel.ctrl-alt-del = 0 //该值控制系统在接收到 ctrl+alt+delete 按键组合时如何反应:
1:不捕获ctrl-alt-del,将系统类似于直接关闭电源
0:捕获ctrl-alt-del,并将此信号传至cad_pid保存的PID号进程进行处理
##kernel.dmesg_restrict = 0 //限制哪些用户可以查看syslog日志 0:不限制 1:只有特权用户能够查看
##kernel.domainname = (none) //网络域名(重启失效)
kernel.ftrace_dump_on_oops = 0 //确定是否将ftrace的缓冲区的信息打印出来,是通过printk来打印的 0:不打印 1:在系统oops时,自动dump堆栈信息到输出终端
kernel.ftrace_enabled = 1
kernel.hostname = jump-host //主机名(重启失效)
kernel.hotplug = //该文件给出了当前系统支持热插拔(hotplug)时接收热插拔事件的程序的名字(包括路径)。
kernel.hung_task_check_count = 4194304 //hung_task检查的进程数量最大值hung_task用于检测一个进程是否在TASK_UNINTERRUPTIBLE状态过长,
只有在等待IO的时候进程才会处于TASK_UNINTERRUPTIBLE状态,这个状态的进程内核不能够通过信号将其唤醒并杀死
kernel.hung_task_panic = 0 //设置hung_task发生后是否引发panic 1:触发 0:不触发
kernel.hung_task_timeout_secs = 120 //hung_task超时时间(以秒为单位),当一个进程在TASK_UNINTERRUPTIBLE状态超过这个时间后,
会发生一个hung_tasklinux会设置40%的可用内存用来做系统cache,当flush数据时这40%内存中的数据由于和IO同步问题导致超时
//最大产生警告数量,当发生一次hung_task时会产生一次警告,但警告数量到达此值后之后的hung_task就不会发生警告
kernel.io_delay_type = 1
kernel.kexec_load_disabled = 0 //表示kexec_load系统调用是否被禁止,此系统调用用于kdump。当发生了一次kexec_load后,此值会自动设置为1。
0:开启kexec_load系统调用
1:禁止kexec_load系统调用
kernel.keys.gc_delay = 300
kernel.keys.maxbytes = 20000
kernel.keys.maxkeys = 200
kernel.keys.persistent_keyring_expiry = 259200
kernel.keys.root_maxbytes = 20000
kernel.keys.root_maxkeys = 200
kernel.kptr_restrict = 1 //是否启用kptr_restrice,此功能为安全性功能,用于屏蔽内核指针。
0:该特性被完全禁止;
1:那些使用“%pk”打印出来的内核指针被隐藏(会以一长串0替换掉),除非用户有CAP_SYSLOG权限,并且没有改变他们的UID/GID(防止在撤销权限之前打开的文件泄露指针信息);
2:所有内核指使用“%pk”打印的都被隐藏。
kernel.kstack_depth_to_print = 12
kernel.latencytop = 0
kernel.max_lock_depth = 1024 //触发死锁检查的嵌套深度值
kernel.modprobe = /sbin/modprobe //该文件给出了当系统支持module时完成modprobe功能的程序的名字(包括路径)。
kernel.modules_disabled = 0 //表示是否禁止内核运行时可加载模块 0:不禁止 1:禁止
kernel.msg_next_id = -1
kernel.msgmax = 65536 //消息队列中单个消息的最大字节数
kernel.msgmnb = 65536 //单个消息队列中允许的最大字节长度(限制单个消息队列中所有消息包含的字节数之和)
kernel.msgmni = 3998 //系统中同时运行的消息队列的个数
kernel.ngroups_max = 65536 //每个用户最大的组数
kernel.nmi_watchdog = 1 //使能nmi_watchdog 0:禁止 1:开启
kernel.ns_last_pid = 15069
kernel.numa_balancing = 0 //是否开启numa_balancing?这块具体看代码
kernel.numa_balancing_migrate_deferred = 16
kernel.numa_balancing_scan_delay_ms = 1000 //单个进程每次进行numa_balancing扫描的间隔时间
kernel.numa_balancing_scan_period_max_ms = 60000 //每次扫描最多花费的时间?
kernel.numa_balancing_scan_period_min_ms = 1000 //每次扫描最少花费的时间?
kernel.numa_balancing_scan_size_mb = 256 //一次扫描进程多少MB的虚拟地址空间内存
kernel.numa_balancing_settle_count = 4 //
kernel.osrelease = 3.13.0-49-generic //内核版本(例:3.10.0-229.7.2.rs1.2.ppc64)
kernel.ostype = Linux //操作系统的类型
kernel.overflowuid = 65534 //Linux的UID为32位,但有些文件系统只支持16位的UID,此时若进行写操作会出错;
当UID超过65535时会自动被转换为一个固定值,这个固定值保存在这个文件中
kernel.panic = 0 //系统发生panic时内核重新引导之前的等待时间 0:禁止重新引导 >0:重新引导前的等待时间(秒)
kernel.panic_on_io_nmi = 0 //
kernel.panic_on_oops = 0 //当系统发生oops或BUG时,所采取的措施
0:继续运行
1:让klog记录oops的输出,然后panic,若kernel.panic不为0,则等待后重新引导内核
kernel.panic_on_unrecovered_nmi = 0
kernel.perf_cpu_time_max_percent = 25 //perf分析工具最大能够占用CPU性能的百分比 0:不限制 1~100:百分比值
kernel.perf_event_max_sample_rate = 100000 //设置perf_event的最大取样速率,默认值为100000
kernel.perf_event_mlock_kb = 516 //设置非特权用户能够允许常驻内存的内存大小。默认为516(KB)
kernel.perf_event_paranoid = 1 //用于限制访问性能计数器的权限
0:仅允许访问用户空间的性能计数器
1:内核与用户空间的性能计数器都可以访问
2:仅允许访问特殊的CPU数据(不包括跟踪点)
-1:不限制
kernel.pid_max = 32768 //进程pid号的最大值
##random
kernel.random.boot_id = 6707de07-d8a1-499f-b4ea-5b156f41feba //此文件是个只读文件,包含了一个随机字符串,在系统启动的时候会自动生成这个uuid
kernel.random.entropy_avail = 161 //此文件是个只读文件,给出了一个有效的熵(4096位)
kernel.random.poolsize = 4096 //熵池大小,一般是4096位,可以改成任何大小
kernel.random.read_wakeup_threshold = 64 //该文件保存熵的长度,该长度用于唤醒因读取/dev/random设备而待机的进程(random设备的读缓冲区长度?)
kernel.random.urandom_min_reseed_secs = 60
kernel.random.uuid = 53d97cf1-cfa5-4f40-9dd0-786544bc02d5 //此文件是个只读文件,包含了一个随机字符串,在random设备每次被读的时候生成
kernel.random.write_wakeup_threshold = 896 //该文件保存熵的长度,该长度用于唤醒因写入/dev/random设备而待机的进程(random设备的写缓冲区长度?)
kernel.randomize_va_space = 2 //用于设置进程虚拟地址空间的随机化
0:关闭进程虚拟地址空间随机化
1:随机化进程虚拟地址空间中的mmap映射区的初始地址,栈空间的初始地址以及VDSO页的地址
2:在1的基础上加上堆区的随机化
(VDSO是用于兼容不同内核与glibc的接口的机制)
kernel.real-root-dev = 0 ##根文件系统所在的设备(写入格式是0x主设备号(16位)次设备号(16位),例如0x801,主设备号是8,次设备号是1),只有使用initrd.img此参数才有效
kernel.sched_autogroup_enabled = 1 ##启用后,内核会创建任务组来优化桌面程序的调度。它将把占用大量资源的应用程序放在它们自己的任务组,这有助于性能提升
0:禁止
1:开启
kernel.sched_cfs_bandwidth_slice_us = 5000 ##
kernel.sched_child_runs_first = 0 ### 设置保证子进程初始化完成后在父进程之前先被调度 0:先调度父进程 1:先调度子进程
kernel.sched_latency_ns = 6000000 ##表示正在运行进程的所能运行的时间的最大值,即使只有一个处于running状态的进程,运行到这个时间也要重新调度一次(以纳秒为单位,在运行时会自动变化?)同时这个值也是所有可运行进程都运行一次所需的时间,每个CPU的running进程数 = sched_latency_ns / sched_min_granularity_ns
kernel.sched_migration_cost_ns = 500000 ##该变量用来判断一个进程是否还是hot,如果进程的运行时间(now - p->se.exec_start)小于它,那么内核认为它的code还在cache里,所以该进程还是hot,那么在迁移的时候就不会考虑它
kernel.sched_min_granularity_ns = 750000 ##表示一个进程在CPU上运行的最小时间,在此时间内,内核是不会主动挑选其他进程进行调度(以纳秒为单位,在运行时会自动变化?)
kernel.sched_nr_migrate = 32 ##在多CPU情况下进行负载均衡时,一次最多移动多少个进程到另一个CPU上
kernel.sched_rr_timeslice_ms = 25 ##用来指示round robin调度进程的间隔,这个间隔默认是100ms。
kernel.sched_rt_period_us = 1000000 #该参数与sched_rt_runtime_us一起决定了实时进程在以sched_rt_period为周期的时间内,实时进程最多能够运行的总的时间不能超过sched_rt_runtime_u
kernel.sched_rt_runtime_us = 950000 ##该参数与sched_rt_period一起决定了实时进程在以sched_rt_period为周期的时间内,实时进程最多能够运行的总的时间不能超过sched_rt_runtime_us
kernel.sched_shares_window_ns = 10000000 ##
kernel.sched_time_avg_ms = 1000
kernel.sched_tunable_scaling = 1 //当内核试图调整sched_min_granularity,sched_latency和sched_wakeup_granularity这三个值的时候所使用的更新方法.
0:不调整
1:按照cpu个数以2为底的对数值进行调整
2:按照cpu的个数进行线性比例的调整
kernel.sched_wakeup_granularity_ns = 1000000 //该变量表示进程被唤醒后至少应该运行的时间的基数,它只是用来判断某个进程是否应该抢占当前进程,并不代表它能够执行的最小时间(sysctl_sched_min_granularity),如果这个数值越小,那么发生抢占的概率也就越高
kernel.sem = 250 128 //该文件包含4个值:
1.同一类信号的最多数量(semmsl)
2.系统中信号的最多数目,=semmni*semmsl (semmns)
3.每个semop系统调用所包含的最大的操作数(能调用的信号量的最多次数) (semopm)
4.系统中信号类型的数目的最大值,一个信号量标识符代表一个类型(semmni)
kernel.sem_next_id = -1 ##
kernel.sg-big-buff = 32768 ##
kernel.shm_next_id = -1
kernel.shm_rmid_forced = 0 ##强制SHM空间和一个进程联系在一起,所以可以通过杀死进程来释放内存 0:不设置 1:设置
kernel.shmall = 268435456 ##系统上可以使用的共享内存的总量(以字节为单位
kernel.shmmax = 4294964295 ##系统所允许的最大共享内存段的大小(以字节为单位)
kernel.shmmni = 4096 ###整个系统共享内存段的最大数量
kernel.softlockup_panic = 0 ##
设置产生softlockup时是否抛出一个panic。Softlockup用于检测CPU可以响应中断,但是在长时间内不能调度(比如禁止抢占时间太长)的死锁情况。这个机制运行在一个hrtimer的中断上下文,每隔一段时间检测一下是否发生了调度,如果过长时间没发生调度,说明系统被死锁。
0:不产生panic
1:产生panic
kernel.stack_tracer_enabled = 0
kernel.sysrq = 0 //该文件指定的值为非零,则激活键盘上的sysrq按键。这个按键用于给内核传递信息,用于紧急情况下重启系统。当遇到死机或者没有响应的时候,甚至连 tty 都进不去,可以尝试用 SysRq 重启计算机。
kernel.tainted = 0 //1:加载非GPL module0:强制加载module
kernel.threads-max = 31693 //系统中进程数量(包括线程)的最大值
kernel.timer_migration = 1
kernel.traceoff_on_warning = 0
kernel.unknown_nmi_panic = 0 //该参数的值影响的行为(非屏蔽中断处理)。当这个值为非0,未知的NMI受阻,PANIC出现。这时,内核调试信息显示控制台,则可以减轻系统中的程序挂起。
kernel.sysrq = 0 //0关闭,1开启。内核没有被完全锁住,不管内核在做什么事情,使用组合键能即时打印出内核的信息。一般用于调试
sysrq功能被打开后,有几种sysrq事件能被触发。不同的内核版本可能会有些不同。但有一些是共用的:
* m - 导出关于内存分配的信息,
* t - 导出线程状态信息,
* p - 导出当前CPU寄存器信息和标志位的信息,
* c - 故意让系统崩溃(在使用netdump或diskdump的时候有用),
* s - 即时同步所有挂载的文件系统,
* u - 即时重新挂载所有的文件系统为只读,
* b - 即时重新启动系统,
* o - 即时关机(如果机器设置并支持此项功能)。
kernel.usermodehelper.bset = 4294967295 4294967295
kernel.usermodehelper.inheritable = 4294967295 4294967295
kernel.version = #83-Ubuntu SMP Fri Apr 10 20:11:33 UTC 2015 //版本号
kernel.watchdog = 1 ## 表示是否禁止softlockup模式和nmi_watchdog(softlockup用于唤醒watchdog) 0:禁止 1:开启
kernel.watchdog_thresh = 10 ##用于设置高精度定时器(hrtimer)、nmi事件、softlockup、hardlockup的阀值(以秒为单位)0:不设置阀值
kernel.yama.ptrace_scope = 1
##网络core
net.core.bpf_jit_enable = 0 //基于时间规则的编译器,用于基于PCAP(packet capture library)并使用伯克利包过滤器(Berkeley Packet Filter,如tcpdump)的用户工具,可以大幅提升复杂规则的处理性能。
0:禁止
1:开启
2:开启并请求编译器将跟踪数据时间写入内核日志
net.core.busy_poll = 0 //默认对网络设备进行poll和select操作的超时时间(us),具体数值最好以sockets数量而定
net.core.busy_read = 0 //默认读取在设备帧队列上数据帧的超时时间(us),推荐值:50
net.core.default_qdisc = pfifo_fast
net.core.dev_weight = 64 //每个CPU一次NAPI中断能够处理网络包数量的最大值
net.core.flow_limit_cpu_bitmap = 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
net.core.flow_limit_table_len = 4096
net.core.message_burst = 10 //设置每十秒写入多少次请求警告;此设置可以用来防止DOS攻击
net.core.message_cost = 5 //置每一个警告的度量值,缺省为5,当用来防止DOS攻击时设置为0
net.core.netdev_budget = 300 //每次软中断处理的网络包个数
net.core.netdev_max_backlog = 1000 //设置当个别接口接收包的速度快于内核处理速度时允许的最大的包序列
net.core.netdev_tstamp_prequeue = 1 //0:关闭,接收的数据包的时间戳在RPS程序处理之后进行标记,这样有可能时间戳会不够准确1:打开,时间戳会尽可能早的标记
net.core.optmem_max = 20480 //表示每个socket所允许的最大缓冲区的大小(字节)
net.core.rmem_default = 212992 //设置接收socket的缺省缓存大小(字节)
net.core.rmem_max = 327679 //设置接收socket的最大缓存大小(字节)
net.core.rps_sock_flow_entries = 0
net.core.somaxconn = 128 //定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。
net.core.warnings = 1 //已经不使用此参数
net.core.wmem_default = 212992 //设置发送的socket缺省缓存大小(字节)
net.core.wmem_max = 327679 //设置发送的socket最大缓存大小(字节)
net.core.xfrm_acq_expires = 30
net.core.xfrm_aevent_etime = 10
net.core.xfrm_aevent_rseqth = 2
net.core.xfrm_larval_drop = 1
##网络ipv4
net.ipv4.cipso_cache_bucket_size = 10
net.ipv4.cipso_cache_enable = 1
net.ipv4.cipso_rbm_optfmt = 0
net.ipv4.cipso_rbm_strictvalid = 1
net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.accept_redirects = 0 //如果主机所在的网段中有两个路由器,你将其中一个设置成了缺省网关,但是该网关
在收到你的ip包时发现该ip包必须经过另外一个路由器,这时这个路由器就会给你发一个所谓的“重定向”icmp包,告诉将ip包转发到另外一个路由器。
参数值为布尔 值,1表示接收这类重定向icmp 信息,0表示忽略。在充当路由器的linux主机上缺 省值为0,在一般的linux主机上缺省值为1。建议将其改为0以消除安全性隐患。
net.ipv4.conf.all.accept_source_route = 0 //是否接受含有源路由信息的ip包。参数值为布尔值,1表示接受,0表示不接受。在
充当网关的linux主机上缺省值为1,在一般的linux主机上缺省值为0。从安全性角 度出发,建议关闭该功能。
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.disable_policy = 0
net.ipv4.conf.all.disable_xfrm = 0
net.ipv4.conf.all.force_igmp_version = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.promote_secondaries = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.proxy_arp_pvlan = 0
net.ipv4.conf.all.route_localnet = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.secure_redirects = 0 //其实所谓的“安全重定向”就是只接受来自网关的“重定向”icmp包。1表示启用,0表示禁止,默认值为启用。
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.shared_media = 1
net.ipv4.conf.all.src_valid_mark = 0
net.ipv4.conf.all.tag = 0
net.ipv4.conf.default.accept_local = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.accept_source_route = 0 //处理无源路由的包
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_notify = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.disable_policy = 0
net.ipv4.conf.default.disable_xfrm = 0
net.ipv4.conf.default.force_igmp_version = 0
net.ipv4.conf.default.forwarding = 0
net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.promote_secondaries = 0
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.proxy_arp_pvlan = 0
net.ipv4.conf.default.route_localnet = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.shared_media = 1
net.ipv4.conf.default.src_valid_mark = 0
net.ipv4.conf.default.tag = 0
net.ipv4.conf.eth0.accept_local = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth0.accept_source_route = 1
net.ipv4.conf.eth0.arp_accept = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.arp_ignore = 0
net.ipv4.conf.eth0.arp_notify = 0
net.ipv4.conf.eth0.bootp_relay = 0
net.ipv4.conf.eth0.disable_policy = 0
net.ipv4.conf.eth0.disable_xfrm = 0
net.ipv4.conf.eth0.force_igmp_version = 0
net.ipv4.conf.eth0.forwarding = 0
net.ipv4.conf.eth0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.eth0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.eth0.log_martians = 0
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.medium_id = 0
net.ipv4.conf.eth0.promote_secondaries = 0
net.ipv4.conf.eth0.proxy_arp = 0
net.ipv4.conf.eth0.proxy_arp_pvlan = 0
net.ipv4.conf.eth0.route_localnet = 0
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.secure_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.shared_media = 1
net.ipv4.conf.eth0.src_valid_mark = 0
net.ipv4.conf.eth0.tag = 0
net.ipv4.conf.lo.accept_local = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_notify = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.disable_policy = 1
net.ipv4.conf.lo.disable_xfrm = 1
net.ipv4.conf.lo.force_igmp_version = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.promote_secondaries = 0
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp_pvlan = 0
net.ipv4.conf.lo.route_localnet = 0
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.lo.secure_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.shared_media = 1
net.ipv4.conf.lo.src_valid_mark = 0
net.ipv4.conf.lo.tag = 0
net.ipv4.icmp_echo_ignore_all = 0 //表示内核是否忽略所有的ICMP ECHO请求,或忽略广播和多播请求 0:响应请求 1:忽略请求 。 默认设置:0 建议设置:1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_errors_use_inbound_ifaddr = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_ratelimit = 1000
net.ipv4.icmp_ratemask = 6168
net.ipv4.igmp_max_memberships = 20 //该文件表示多播组中的最大成员数量。 默认设置:20
net.ipv4.igmp_max_msf = 10
net.ipv4.inet_peer_maxttl = 600 //条目的最大存活期。在此期限到达之后,如果缓冲池没有耗尽压力的话,不使用的条目将会超时。默认设置600
net.ipv4.inet_peer_minttl = 120 //条目的最低存活期。在重组端必须要有足够的碎片存活期。这个最低存活期必须保证缓冲池容积是否少于inet_peer_threshold。 默认设置120
net.ipv4.inet_peer_threshold = 65664 //INET对端存储器某个合适值,当超过该阀值条目将被丢弃。该阀值同样决定生存 时间以及废物收集通过的时间间隔。条目越多,存活期越低,GC 间隔越短。
##网路IP
net.ipv4.ip_default_ttl = 64 //表示一个数据报的生存周期(Time To Live),即最多经过多少路由器。 默认设置64
net.ipv4.ip_dynaddr = 0 //该参数通常用于使用拨号连接的情况,可以使系统动能够立即改变ip包的源地址为该ip地址,
同时中断原有的tcp对话而用新地址重新发出一个syn请求 包,开始新的tcp对话。在使用ip欺骗时,该参数可以立即改变伪装地址为新的ip地址。
该文件表示是否允许动态地址,如果该值非0,表示允许;如果该值 大于1,内核将通过log记录动态地址重写信息。
net.ipv4.ip_early_demux = 1
net.ipv4.ip_forward = 0 //是否打开IP转发,默认设置0。0:禁止 1:转发
net.ipv4.ip_local_port_range = 32768 61000 //表示TCP/UDP协议打开的本地端口号。 默认设置:1024 4999 建议设置:32768 61000
net.ipv4.ip_local_reserved_ports =
net.ipv4.ip_no_pmtu_disc = 0 //表示在全局范围内关闭路径MTU探测功能。默认设置0
net.ipv4.ip_nonlocal_bind = 0 //表示是否允许进程邦定到非本地地址。 默认设置:0
net.ipv4.ipfrag_high_thresh = 4194304
net.ipv4.ipfrag_low_thresh = 3145728 //表示用于重组IP分段的内存分配最低值和最高值,一旦达到最高内存分配值,其它分段将被丢弃,直到达到最低内存分配值。 默认设置:196608
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 600
net.ipv4.ipfrag_time = 30 //表示一个IP分段在内存中保留多少秒。默认设置30(秒)
##网络neigh
net.ipv4.neigh.default.anycast_delay = 100 //对相邻请求信息的回复的最大延迟时间(单位 秒)
net.ipv4.neigh.default.app_solicit = 0 //在使用多播探测前,通过netlink发送到用户空间arp守护程序的最大探测数
net.ipv4.neigh.default.base_reachable_time_ms = 30000 //一旦发现相邻记录,至少在一段介于 base_reachable_time/2和3*base_reachable_time/2之间的随机时间内,该记录是有效的.如果收到上层协议的肯定反馈, 那么记录的有效期将延长.(单位 秒)
net.ipv4.neigh.default.delay_first_probe_time = 5 发现某个相邻层记录无效后,发出第一个探测要等待的时间。(单位 秒)
net.ipv4.neigh.default.gc_interval = 30 //垃圾收集器收集相邻层记录和无用记录的运行周期(单位 秒)
net.ipv4.neigh.default.gc_stale_time = 60 //决定检查一次相邻层记录的有效性的周期. 当相邻层记录失效时,将在给它发送数据前,再解析一次.(单位 秒)
net.ipv4.neigh.default.gc_thresh1 = 2048 //存在于ARP高速缓存中的最少个数,如果少于这个数,垃圾收集器将不会运行
net.ipv4.neigh.default.gc_thresh2 = 4096 //保存在 ARP 高速缓存中的最多的记录软限制. 垃圾收集器在开始收集前,允许记录数超过这个数字,在创建新表项时如果发现5秒没有刷新过,那么进行强制回收
net.ipv4.neigh.default.gc_thresh3 = 8192 //保存在 ARP 高速缓存中的最多记录的硬限制, 一旦高速缓存中的数目高于此, 垃圾收集器将马上运行
net.ipv4.neigh.default.locktime = 100 //防止相邻记录被过度频繁刷新,引起抖动,只有距邻居上次刷新时间超过这时才允许被再次刷新.(单位 秒)
net.ipv4.neigh.default.mcast_solicit = 3 //在把记录标记为不可达之前, 用多播/广播方式解析地址的最大次数.
net.ipv4.neigh.default.proxy_delay = 80 //当接收到有一个arp请求时,在回应前可以延迟的时间,这个请求是要得到一个已知代理arp项的地址.(单位 百毫秒)
net.ipv4.neigh.default.proxy_qlen = 64 //能放入代理 ARP 地址队列的数据包最大数目.
net.ipv4.neigh.default.retrans_time_ms = 1000 //重发一个arp请求前的等待的毫秒数
net.ipv4.neigh.default.ucast_solicit = 3 //arp请求最多发送次数
net.ipv4.neigh.default.unres_qlen = 31 //a最大挂起arp请求的数量,这些请求都正在被解析中.
net.ipv4.neigh.default.unres_qlen_bytes = 65536 //最大处理arp包的字节数
net.ipv4.neigh.eth0.anycast_delay = 100 //对相邻请求信息的回复的最大延迟时间(单位 秒)
net.ipv4.neigh.eth0.app_solicit = 0 //在使用多播探测前,通过netlink发送到用户空间arp守护程序的最大探测数
net.ipv4.neigh.eth0.base_reachable_time_ms = 30000 //一旦发现相邻记录,至少在一段介于 base_reachable_time/2和3*base_reachable_time/2之间的随机时间内,该记录是有效的.如果收到上层协议的肯定反馈, 那么记录的有效期将延长.(单位 毫秒)
net.ipv4.neigh.eth0.delay_first_probe_time = 5 //发现某个相邻层记录无效后,发出第一个探测要等待的时间。(单位 秒)
net.ipv4.neigh.eth0.gc_stale_time = 60 //决定检查一次相邻层记录的有效性的周期. 当相邻层记录失效时,将在给它发送数据前,再解析一次.(单位 秒)
net.ipv4.neigh.eth0.locktime = 100 //防止相邻记录被过度频繁刷新,引起抖动,只有距邻居上次刷新时间超过这时才允许被再次刷新.(单位 秒)
net.ipv4.neigh.eth0.mcast_solicit = 3 //把记录标记为不可达之前, 用多播/广播方式解析地址的最大次数.
net.ipv4.neigh.eth0.proxy_delay = 80 //当接收到有一个arp请求时,在回应前可以延迟的时间,这个请求是要得到一个已知代理arp项的地址.(单位 百毫秒)
net.ipv4.neigh.eth0.proxy_qlen = 64 //能放入代理 ARP 地址队列的数据包最大数目.
net.ipv4.neigh.eth0.retrans_time_ms = 1000 //重发一个arp请求前的等待的毫秒数
net.ipv4.neigh.eth0.ucast_solicit = 3 //arp请求最多发送次数
net.ipv4.neigh.eth0.unres_qlen = 31 //a最大挂起arp请求的数量,这些请求都正在被解析中.
net.ipv4.neigh.eth0.unres_qlen_bytes = 65536 //最大处理arp包的字节数
net.ipv4.neigh.lo.anycast_delay = 100 //对相邻请求信息的回复的最大延迟时间(单位 秒)
net.ipv4.neigh.lo.app_solicit = 0
net.ipv4.neigh.lo.base_reachable_time_ms = 30000
net.ipv4.neigh.lo.delay_first_probe_time = 5
net.ipv4.neigh.lo.gc_stale_time = 60
net.ipv4.neigh.lo.locktime = 100
net.ipv4.neigh.lo.mcast_solicit = 3
net.ipv4.neigh.lo.proxy_delay = 80
net.ipv4.neigh.lo.proxy_qlen = 64
net.ipv4.neigh.lo.retrans_time_ms = 1000
net.ipv4.neigh.lo.ucast_solicit = 3
net.ipv4.neigh.lo.unres_qlen = 31
net.ipv4.neigh.lo.unres_qlen_bytes = 65536
net.ipv4.ping_group_range = 1 0
##网络路由
net.ipv4.route.error_burst = 1250 //这个参数和error_cast一起用于限制有多少个icmp不可达消息被发送.当数据包不能到达下一跳时会发送icmp不可达数据包.当一些主机忽略我们的icmp重定向消息时也会打印一些错误信息到dmesg.这个选项也控制打印的次数.(单位 秒)
net.ipv4.route.error_cost = 250 //这个参数和error_burst一起用于限制有多少个icmp不可达消息被发送.当数据包不能到达下一跳时会发送icmp不可达数据包.
当一些主机忽略我们的icmp重定向消息时也会打印一些错误信息到dmesg.这个选项也控制打印的次数.
error_cost值越大,那么icmp不可达和写错误信息的频率就越低.(单位 秒)
net.ipv4.route.gc_elasticity = 8 //用来控制路由缓存垃圾回收机制的频率和行为.当路由表一个hash项的长度超过此值时,会进行缓存缩减,当路由缓存项长度超过ip_rt_gc_elasticity << rt_hash_log(表示路由高速缓存hash table的容量以2为对数所得的值) 时会进行强烈的回收.
net.ipv4.route.gc_interval = 60 //此参数定义了路由表垃圾回收的间隔(秒)
net.ipv4.route.gc_min_interval = 0 //已不再使用,并被gc_min_interval_ms取代
net.ipv4.route.gc_min_interval_ms = 500 //此参数定义了路由表垃圾回收的最小间隔(ms)
net.ipv4.route.gc_thresh = -1 //路由hash table的大小,当cache中的路由条数超过此值时,开始垃圾回收.
net.ipv4.route.gc_timeout = 300 //#路由缓存刷新频率,当一个路由失败后多长时间跳到另一个路由,默认是300。
net.ipv4.route.max_size = 2147483647 //路由高速缓存的最大项数,超过会进行清除旧项操作.
net.ipv4.route.min_adv_mss = 256 //该文件表示最小的MSS大小,取决于第一跳的路由器MTU。默认设置256(bytes)
net.ipv4.route.min_pmtu = 552 //该文件表示最小路径MTU的大小。 默认设置552
net.ipv4.route.mtu_expires = 600 //该文件表示PMTU信息缓存多长时间。 默认设置600(秒)
net.ipv4.route.redirect_load = 5 //决定是否要向特定主机发送更多的ICMP重定向的时间因子.一旦达到load时间或number个数就不再发送.
net.ipv4.route.redirect_number = 9 //决定是否要向特定主机发送更多的ICMP重定向的数量因子.一旦达到load时间或number个数就不再发送.
net.ipv4.route.redirect_silence = 5120 //重定向的超时.经过这么长时间后,重定向会重发,而不管是否已经因为超过load或者number限制而停止.
##网络tcp
net.ipv4.tcp_abort_on_overflow = 0 //当守护进程太忙而不能接受新的连接,就向对方发送reset消息,默认值是false。 默认设置:0
net.ipv4.tcp_adv_win_scale = 1 //表示计算缓冲开销。默认设置:2
net.ipv4.tcp_allowed_congestion_control = cubic reno
net.ipv4.tcp_app_win = 31 //表示保留max数量的窗口由于应用缓冲。当为0时表示不需要缓冲。 默认设置:31
net.ipv4.tcp_available_congestion_control = cubic reno
net.ipv4.tcp_base_mss = 512
net.ipv4.tcp_challenge_ack_limit = 100
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_dsack = 1 //表示是否允许TCP发送“两个完全相同”的SACK。 默认设置:1
net.ipv4.tcp_early_retrans = 3
net.ipv4.tcp_ecn = 2 //表示是否打开TCP的直接拥塞通告功能。 默认设置:2
net.ipv4.tcp_fack = 1 //表示是否打开FACK拥塞避免和快速重传功能。 默认设置:1
net.ipv4.tcp_fastopen = 1
net.ipv4.tcp_fastopen_key = 00000000-00000000-00000000-00000000
net.ipv4.tcp_fin_timeout = 60 //对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认设置:60秒
net.ipv4.tcp_frto = 2
net.ipv4.tcp_keepalive_intvl = 75 //该文件表示发送TCP探测的频率,乘以tcp_keepalive_probes表示断开没有相应的TCP连接的时间。默认设置:75秒
net.ipv4.tcp_keepalive_probes = 9 //表示丢弃TCP连接前,进行最大TCP保持连接侦测的次数。保持连接仅在SO_KEEPALIVE套接字选项被打开时才被发送。 默认设置:9
net.ipv4.tcp_keepalive_time = 7200 //该文件表示从不再传送数据到向连接上发送保持连接信号之间所需的秒数。 默认设置:7200(2小时)
net.ipv4.tcp_limit_output_bytes = 131072
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_max_orphans = 8192 //系统所能处理不属于任何进程的TCP sockets最大数量。超过这个数量,那么不属于任何进程的连接会被立即reset,
并同时显示警告信息。默认设置:8192
net.ipv4.tcp_max_syn_backlog = 128 //对于还未获得客户端确认的连接请求,需要保存在队列中最大数目。对于 超过 128Mb 内存的系统,默认值是 1024,低于 128Mb 的则为 128。
net.ipv4.tcp_max_tw_buckets = 8192 //系统在同时所处理的最大timewait sockets 数目。如果超过此数的话,time-wait socket 会被立即砍除并且显示警告信息。默认设置:8192
net.ipv4.tcp_mem = 47541 63388 95082
net.ipv4.tcp_min_tso_segs = 2
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_mtu_probing = 0
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_notsent_lowat = -1
net.ipv4.tcp_orphan_retries = 0 //在近端丢弃TCP连接之前,要进行多少次重试。默认设置:7
net.ipv4.tcp_reordering = 3 //表示TCP流中重排序的数据报最大数量。 默认设置:3
net.ipv4.tcp_retrans_collapse = 1 //表示对于某些有bug的打印机是否提供针对其bug的兼容性。默认设置:1
net.ipv4.tcp_retries1 = 3 //表示放弃回应一个TCP连接请求前进行重传的次数。 默认设置:3
net.ipv4.tcp_retries2 = 15 //表示放弃在已经建立通讯状态下的一个TCP数据包前进行重传的次数。默认设置:15
net.ipv4.tcp_rfc1337 = 0 //
net.ipv4.tcp_rmem = 4096 87380 6291456 //该文件包含3个整数值,分别是:min,default,max 默认设置:4096 87380 174760
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则不受该值影响。
net.ipv4.tcp_sack = 1 //表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能
(这样可以让发送者只发送丢失的报文段)(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。 默认设置:1
net.ipv4.tcp_slow_start_after_idle = 1 //
net.ipv4.tcp_stdurg = 0 //使用 TCP urg pointer 字段中的主机请求解释功能。默认设置:0
net.ipv4.tcp_syn_retries = 6 //表示本机向外发起TCP SYN连接超时重传的次数,该值仅仅针对外出的连接,不应该高于255;默认设置:3
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syncookies = 1 //表示是否打开TCP同步标签(syncookie),可以防止一个套接字在有过多试图连接到达时引起过载。默认设置:0
net.ipv4.tcp_thin_dupack = 0
net.ipv4.tcp_thin_linear_timeouts = 0
net.ipv4.tcp_timestamps = 1 //表示是否启用以一种比超时重发更精确的方法来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。 默认设置:1
net.ipv4.tcp_tso_win_divisor = 3
##net.ipv4.tcp_tw_recycle = 0
##net.ipv4.tcp_tw_reuse = 0 //表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。默认设置:0
net.ipv4.tcp_window_scaling = 1 //该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。 默认设置:1
net.ipv4.tcp_wmem = 4096 16384 4194304 //该文件包含3个整数值,分别是:min,default,max 默认设置:4096 16384 131072
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。
net.ipv4.tcp_workaround_signed_windows = 0
net.ipv4.udp_mem = 47541 95082
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
net.ipv4.xfrm4_gc_thresh = 32768
#网络netfilter
net.netfilter.nf_conntrack_max = 1000000 //CONNTRACK_MAX 允许的最大跟踪连接条目,是在内核内存中netfilter可以同时处理的“任务”(连接跟踪条目)
net.netfilter.nf_log.0 = NONE
net.netfilter.nf_log.1 = NONE
net.netfilter.nf_log.10 = NONE
net.netfilter.nf_log.11 = NONE
net.netfilter.nf_log.12 = NONE
net.netfilter.nf_log.2 = NONE
net.netfilter.nf_log.3 = NONE
net.netfilter.nf_log.4 = NONE
net.netfilter.nf_log.5 = NONE
net.netfilter.nf_log.6 = NONE
net.netfilter.nf_log.7 = NONE
net.netfilter.nf_log.8 = NONE
net.netfilter.nf_log.9 = NONE
net.unix.max_dgram_qlen = 10
##内核虚拟机
vm.admin_reserve_kbytes = 8192 //给有cap_sys_admin权限的用户保留的内存数量,默认值是min(free pages * 3%, 8MB)。这些内存是为了给管理员登录和杀死进程恢复系统提供足够的内存。
vm.block_dump = 0 //如果设置的是非零值,则会启用块I/O调试。更多的关于块I/O调试的信息可以参见Documentation/laptops/laptop-mode.txt。
vm.dirty_background_bytes = 0 // 当脏页所占的内存数量超过dirty_background_bytes时,内核的flusher线程开始回写脏页。
注意:dirty_background_bytes参数和dirty_background_ratio参数是相对的,只能指定其中一个。当其中一个参数文件被写入时,会立即开始计算脏页限制,并且会将另一个参数的值清零
vm.dirty_background_ratio = 10 // 当脏页所占的百分比(相对于所有可用内存,即空闲内存页+可回收内存页)达到dirty_background_ratio时,
内核的flusher线程开始回写脏页数据。所有可用内存不等于总的系统内存。
vm.dirty_bytes = 0 //当脏页所占的内存数量达到dirty_bytes时,执行磁盘写操作的进程自己开始回写脏数据。
注意:dirty_bytes参数和dirty_ratio参数是相对的,只能指定其中一个。当其中一个参数文件被写入时,会立即开始计算脏页限制,并且会将另一个参数的值清零
vm.dirty_expire_centisecs = 3000 //脏数据的过期时间,超过该时间后内核的flusher线程被唤醒时会将脏数据回写到磁盘上,单位是百分之一秒。
vm.dirty_ratio = 20 //当脏页所占的百分比(相对于所有可用内存,即空闲内存页+可回收内存页)达到dirty_ratio时,执行磁盘写操作的进程会自己开始回写脏数据。所有可用内存不等于总的系统内存。
vm.dirty_writeback_centisecs = 500 // 内核的flusher线程会周期性地唤醒,然后将老的脏数据写到磁盘上。dirty_writeback_centisecs定义了唤醒的间隔,单位是百分之一秒。
如果设置为0,则禁止周期性地唤醒回写线程。
vm.drop_caches = 0 // 向/proc/sys/vm/drop_caches文件中写入数值可以使内核释放page cache,dentries和inodes缓存所占的内存。
只释放pagecache:
echo 1 > /proc/sys/vm/drop_caches
只释放dentries和inodes缓存:
echo 2 > /proc/sys/vm/drop_caches
释放pagecache、dentries和inodes缓存:
echo 3 > /proc/sys/vm/drop_caches
这个操作不是破坏性操作,脏的对象(比如脏页)不会被释放,因此要首先运行sync命令。
vm.extfrag_threshold = 500
vm.hugepages_treat_as_movable = 0 //这个参数用来控制是否可以从ZONE_MOVABLE内存域中分配大页面。如果设置为非零,大页面可以从ZONE_MOVABLE内存域分配。
ZONE_MOVABLE内存域只有在指定了kernelcore启动参数的情况下才会创建,如果没有指定kernelcore启动参数,hugepages_treat_as_movable参数则没有效果。
大页面迁移在某些情况下是可用的,这取决于系统架构和大页面的大小。如果大页面支持迁移,从ZONE_MOVABLE内存域分配总是启用的,会忽略hugepages_treat_as_movable参数的值。换句话说,hugepages_treat_as_movable参数只对不支持迁移的大页面有效。
假设在你的系统中大页面不能迁移,这个参数的一个用例是用户可以通过启用从ZONE_MOVABLE内存域分配大页面的特性,让大页面池扩展性更好。这是 因为在ZONE_MOVABLE内存域,页面的回收、迁移和压缩工作的更好,也更容易获得连续的内存块。注意,为不能迁移的大页面使用 ZONE_MOVABLE会损害内存热移除等特性,因此需要用户自己来权衡。
vm.hugetlb_shm_group = 0 //指定组ID,拥有该gid的用户可以使用大页创建SysV共享内存段
vm.laptop_mode = 0 //设置开启laptop mode,此模式主要是通过降低硬盘的转速来
vm.swappiness = 10 //0表示最大限度使用物理内存,100表示最大限度使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。默认60
[root@git-node1 ~]# lsof|grep 26431|wc -l
54
[root@git-node1 ~]# ls -l /proc/26431/fd/ |wc -l
4
进程26431总共打开了54个文件,只占用了4个文件描述符。
lsof(list open files)是一个列出当前系统打开文件的工具
lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示abc进程现在打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
lsof `which httpd` //那个进程在使用apache的可执行文件
lsof /etc/passwd //那个进程在占用/etc/passwd
lsof /dev/hda6 //那个进程在占用hda6
lsof /dev/cdrom //那个进程在占用光驱
lsof -c sendmail //查看sendmail进程的文件使用情况
lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn
lsof -p 30297 //显示那些文件被pid为30297的进程打开
lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列
lsof -u1000 //查看uid是100的用户的进程的文件使用情况
lsof -utony //查看用户tony的进程的文件使用情况
lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思)
lsof -i //显示所有打开的端口
lsof -i:80 //显示所有打开80端口的进程
lsof -i -U //显示所有打开的端口和UNIX domain文件
lsof -i UDP@[url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接
lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)
lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数
Red_Hat_Enterprise_Linux-6-Performance_Tuning_Guide-zh-CN.pdf
http://buguoruci.blog.51cto.com/4104173/1255836