limits和sysctl配置详解.docx

上传人:w****2 文档编号:6594875 上传时间:2020-02-29 格式:DOCX 页数:52 大小:229.84KB
返回 下载 相关 举报
limits和sysctl配置详解.docx_第1页
第1页 / 共52页
limits和sysctl配置详解.docx_第2页
第2页 / 共52页
limits和sysctl配置详解.docx_第3页
第3页 / 共52页
点击查看更多>>
资源描述
limits.conf和sysctl.conf那些事儿1. limits.conf/etc/security/limits.conf工作原理:limits.conf文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules中pam_limits.so的配置文件),突破系统的默认限制,对系统访问资源有一定保护作用,当用户访问服务器时,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。limits.conf 和sysctl.conf区别在于limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置。文件格式:username|groupname type resource limi1)username|groupname设置需要被限制的用户名,组名前面加和用户名区别。也可用通配符*来做所有用户的限制2)type类型有soft,hard 和 -l soft 指的是当前系统生效的设置值。l hard 表明系统中所能设定的最大值,soft的限制不能比hard限制高。l - 表明同时设置了soft和hard的值。3)resource: 表示要限制的资源l core - 限制内核文件的大小l core file : 当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储映像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像,系统默认core文件的大小为0,所以没有被创建。可以用ulimit命令查看和修改core文件的大小。 ulimit -c 0 #ulimit -c 1000 #ulimit -c unlimited 注意:如果想让修改永久生效,则需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.confl date - 最大数据大小l fsize - 最大文件大小l memlock - 最大锁定内存地址空间l nofile - 打开文件的最大数目。对于需要做许多套接字连接并使它们处于打开状态的应用程序而言,最好通过使用ulimit -n,或者通过设置nofile参数,为用户把文件描述符的数量设置得比默认值高一些。l rss - 最大持久设置大小l stack - 最大栈大小l cpu - 以分钟为单位的最多 CPU 时间l noproc - 进程的最大数目l as - 地址空间限制l maxlogins - 此用户允许登录的最大数目通过ulimit -a可以查看限制数量a) Centos5/6centos5/6,只需要关注/etc/security/limits.conf和/etc/security/limits.d/下配置文件l Centos5/6永久修改open files数量1) 在/etc/security/limits.conf下,添加以下两行* soft nofile 65535* hard nofile 655352) 重启服务器通过ulimit -a查看,如上面没有生效,添加如下步骤:1) find / -name pam_limits.so2) 在/etc/pam.d/login下结尾处添加:session required /usr/lib64/security/pam_limits.so路径为第1步查找时给的结果反馈3) 重启服务器注:ulimit其实就是对单一程序的限制,进程级别的。/proc/sys/fs/file-max,该参数指定系统范围内所有进程可以打开的文件句柄的数量限制。l Centos5/6永久修改file-max参数vi /etc/sysctl.conffs.file-max = 2000000sysctl -pcat /proc/sys/fs/file-maxl Centos5/6修改max user memory数量1) 在/etc/security/limits.d/90-nproc.conf下,修改以下行(建议值65535)* soft nproc 1024b) Centos7centos7,/etc/security/limits.conf和/etc/security/limits.d/仅适用于通过PAM认证登录用户的资源限制(PAM认证顺序:Service(服务)PAM(配置文件)pam_*.so。PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。),但是对systemd的service资源限制不生效。对于systemd service的资源限制主要依靠/etc/systemd/system.conf和 /etc/systemd/user.conf,同时也会加载两个对应的目录中的所有.conf文件 /etc/systemd/system.conf.d/*.conf和/etc/systemd/user.conf.d/*.conf。system.conf是系统实例使用的,user.conf用户实例使用的。一般的service,使用system.conf中的配置即可针对单个Service也可以设置,比如nginx.serviceLimitNOFILE=65535LimitNPROC=65535l Centos7永久修改open files数量1) 在/etc/security/limits.conf下,添加以下两行* soft nofile 65535* hard nofile 655352) 重启服务器通过ulimit -a查看,如上面没有生效,添加如下步骤:1) find / -name pam_limits.so2) 在/etc/pam.d/login下结尾处添加:session required /usr/lib64/security/pam_limits.so路径为第1步查找时给的结果反馈3) 重启服务器注:ulimit其实就是对单一进程的限制,进程级别的。/proc/sys/fs/file-max,该参数指定系统范围内所有进程可以打开的文件句柄的数量限制。l Centos7永久修改file-max参数vi /etc/sysctl.conffs.file-max = 2000000sysctl -pcat /proc/sys/fs/file-maxl Centos7修改max user memory数量vi /etc/systemd/system.confDefaultLimitNPROC=100000重启服务器cat /proc/mysql的PID/limits注:Centos7一次性修改core、max_processes、max_open_file三个参数方法vi /etc/systemd/system.confDefaultLimitCORE=infinityDefaultLimitNOFILE=100000(建议值65535)DefaultLimitNPROC=100000(建议值65535)重启服务器cat /proc/mysql的PID/limits2. sysctl.conf(内核版本3.10)/proc/sys目录下存放着大多数内核参数,并且可以在系统运行时进行更改,不过重新启动机器就会失效。/etc/sysctl.conf是一个允许改变正在运行中的Linux系统接口,它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。也就是说/proc/sys下内核文件与配置文件sysctl.conf中变量存在着对应关系。常见参数及设置:c) fsl fs.aio-max-nr表示同时拥有的异步IO请求数量。Oracle建议将该参数设置为1048576或更高。默认值:65536fs.aio-nr表示当前IO请求数量。该参数为只读参数。l fs.epoll.max_user_watches一个用户能够往epoll 内核事件表注册的事件总量,它是指该用户打开的所有epoll实例总共能监听的事件数目,而不是单个epoll实例能监听的事件数目。这个内核参数限制了epoll使用的内核内存总量。默认值:411648。l fs.file-max表示系统级文件描述符数限制最大值,是对整个系统的限制,并不是针对用户的。当前测试环境默认为198266。建议计算的公式:grep -r MemTotal /proc/meminfo | awk printf(%d,$2/10)l fs.file-nr文件与file-max相关,它有三个值:已分配文件句柄的数目,已使用文件句柄的数目,文件句柄的最大数目,该文件是只读的,仅用于显示信息。l fs.inode-state此文件保存了三个值,前两个分别表示 已分配inode数和空闲inode数。第三个是已超出系统最大inode值的数量,此时系统需清除排查inode列表l inotify-tools相关内核参数fs.inotify.max_queued_events:表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。fs.inotify.max_user_instances:表示每一个real user ID可创建的inotify instatnces的数量上限。fs.inotify.max_user_watches:表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小。l 租借锁相关内核参数fs.lease-break-time = 45:表示租借锁时间为45sfs.leases-enable = 1:表示启用租借锁,默认状态启用。l fs.nr_open表示单个进程可分配的最大文件数,注意ulimit的nofile hard limit不能超过该值,否则会造成无法登录。默认值为:1048576。l fs.protected_hardlinks用于限制普通用户建立硬链接0:不限制用户建立硬链接1:限制,如果文件不属于用户,或者用户对此用户没有读写权限,则不能建立硬链接默认值为:1。l fs.protected_symlinks = 1用于限制普通用户建立软链接0:不限制用户建立软链接1:限制,允许用户建立软连接的情况是 软连接所在目录是全局可读写目录或者软连接的uid与跟从者的uid匹配,又或者目录所有者与软连接所有者匹配默认值:1。l fs.suid_dumpable表示如果一个程序设定了setuid,那么普通用户在默认情况下不生成core文件,只有当该参数为1时,才会产生。默认值为0。d) kernell kernel.cad_pid表示接收Ctrl+Alt+Del操作的INT信号的进程的PID默认值为1。l kernel.ctrl-alt-del该值表示控制系统在接收到 ctrl+alt+delete 按键组合时如何反应:1:不捕获ctrl-alt-del,将系统类似于直接关闭电源0:捕获ctrl-alt-del,并将此信号传至cad_pid保存的PID号进程进行处理默认值为0。l kernel.core_pattern设置core文件保存位置或文件名,只有文件名时,则保存在应用程序运行的目录下默认值为core。l kernel.core_pipe_limit定义了可以有多少个并发的崩溃程序可以通过管道模式传递给指定的core信息收集程序。如果超过了指定数,则后续的程序将不会处理,只在内核日志中做记录。0是个特殊的值,当设置为0时,不限制并行捕捉崩溃的进程,但不会等待用户程序搜集完毕方才回收/proc/pid目录(就是说,崩溃程序的相关信息可能随时被回收,搜集的信息可能不全)。默认值为0。l kernel.core_uses_pidCore文件的文件名是否添加应用程序pid做为扩展:0表示不添加,1表示添加。默认值为1。l kernel.dmesg_restrict限制哪些用户可以查看syslog日志,0表示不限制,1表示只有特权用户可以查看。默认值为0。l kernel.kptr_restrict是否启用kptr_restrice,此功能为安全性功能,用于屏蔽内核指针。0:该特性被完全禁止;1:那些使用“%pk”打印出来的内核指针被隐藏(会以一长串0替换掉),除非用户有CAP_SYSLOG权限,并且没有改变他们的UID/GID(防止在撤销权限之前打开的文件泄露指针信息);2:所有内核指使用“%pk”打印的都被隐藏。默认值为0,建议设置为1。l kernel.modprobe该文件给出了当系统支持module时完成modprobe功能的程序的名字(包括路径)。默认值为:/sbin/modprobel kernel.modules_disabled表示是否禁止内核运行时可加载模块:0表示不禁止,1表示禁止默认值为0。l kernel.msgmax消息队列中单个消息的最大字节数。默认值为8192。l kernel.msgmnb单个消息队列中允许的最大字节长度(限制单个消息队列中所有消息包含的字节数之和)默认值为16384。l kernel.msgmni系统中同时运行的消息队列的个数。默认值为3965。l kernel.numa_balancing表示是否禁止NUMA自动平衡策略,0表示禁止,1表示不禁止。默认为0补充:numa相关知识numactl需要安装相应软件包numactl.x86_64l dmesg | grep -i numa,若有返回值表示CPU支持NUMA0.000000 NUMA: Node 0 mem 0x00000000-0x0009ffff + mem 0x00100000-0x0fffffff - mem 0x00000000-0x0fffffff0.000000 NUMA: Node 0 mem 0x00000000-0x0fffffff + mem 0x10000000-0x7fffffff - mem 0x00000000-0x7fffffffnumasta查看具体numa信息numa_hit是打算在该节点上分配内存,最后从这个节点分配的次数;num_miss是打算在该节点分配内存,最后却从其他节点分配的次数;num_foregin是打算在其他节点分配内存,最后却从这个节点分配的次数;interleave_hit是采用interleave策略最后从该节点分配的次数;local_node该节点上的进程在该节点上分配的次数other_node是其他节点进程在该节点上分配的次数l numactl -hardare查看不同节点的内存总大小,可用大小及node distance建议:数据库服务器关闭该功能,centos7,vi /etc/grub2.cfg找到rhgb quiet,在他们后面加上“numa=off”,重启即可。l kernel.panic系统发生panic时内核重新引导之前的等待时间,0表示禁止重新引导,0表示引导前等待几秒。默认值为0。l kernel.panic_on_oops当系统发生oops或BUG时,所采取的措施,0表示继续运行,1表示让klog记录oops的输出,然后panic,若kernel.panic不为0,则等待后重新引导内核。默认值为1。l kernel.panic_on_warn0:表示只警告,不发生panic,1表示发生panic。默认值为0。l perf性能分析工具kernel.perf_cpu_time_max_percent:perf分析工具最大能够占用CPU性能的百分比,0表示不限制,1100表示百分比。默认值为25。kernel.perf_event_max_sample_rate:设置perf_event最大取样速率默认值:10000。kernel.perf_event_mlock_kb:设置非特权用户允许常驻内存的内存大小。默认值为516(KB)。kernel.perf_event_paranoid:用于限制访问性能计数器的权限。0表示仅允许访问用户空间的性能计数器;1表示内核与用户空间的性能计数器都可以访问2表示仅允许访问特殊的CPU数据-1表示不限制默认值为1l kernel.pid_max表示当前操作系统PID的最大值默认值:131072。64位操作系统最大值为4194303。l kernel.pty.max所分配的PTY的最大值(PTY为虚拟终端,用于远程连接)默认为4096。l kernel.pty.nr当前配置的PTY个数。该参数为可变参数。l kernel.pty.reserve保留的PTY个数,主要分配给系统使用。默认值为1024。l kernel.random.boot_id此文件是个只读文件,包含了一个随机字符串,在系统启动的时候会自动生成这个uuid。l kernel.random.entropy_avail此文件是个只读文件,给出了一个有效的熵(4096位)l kernel.random.poolsize熵池大小,一般是4096位,可以改成任何大小。l kernel.random.read_wakeup_threshold该文件保存熵的长度,该长度用于唤醒因读取/dev/random设备而待机的进程(random设备的读缓冲区长度)l kernel.random.uuid此文件是个只读文件,包含了一个随机字符串,在random设备每次被读的时候生成。l kernel.random.write_wakeup_threshold该文件保存熵的长度,该长度用于唤醒因写入/dev/random设备而待机的进程(random设备的写缓冲区长度)l kernel.randomize_va_space用于设置进程虚拟地址空间的随机化。0表示关闭进程虚拟地址空间随机化1表示随机化进程虚拟地址空间中的mmap映射区的初始地址,栈空间的初始地址以及VDSO页的地址2表示在1的基础上加上堆区的随机化默认值为2。l kernel.sched_child_runs_first设置保证子进程初始化完成后在父进程之前先被调度。0表示先调度父进程1表示先调度子进程默认值为0。l kernel.sched_latency_ns表示正在运行进程的所能运行的时间的最大值,即使只有一个处于running状态的进程,运行到这个时间也要重新调度一次(以纳秒为单位,在运行时会自动变化)同时这个值也是所有可运行进程都运行一次所需的时间,每个CPU的running进程数 = sched_latency_ns / sched_min_granularity_nsl kernel.sched_migration_cost_ns该变量用来判断一个进程是否还是hot,如果进程的运行时间(now - p-se.exec_start)小于它,那么内核认为它的code还在cache里,所以该进程还是hot,那么在迁移的时候就不会考虑它。默认值为:500000。l kernel.sched_min_granularity_ns表示一个进程在CPU上运行的最小时间,在此时间内,内核是不会主动挑选其他进程进行调度(以纳秒为单位,在运行时会自动变化)默认值为:10000000。l kernel.sched_nr_migrate在多CPU情况下进行负载均衡时,一次最多移动多少个进程到另一个CPU上。默认值为32。l kernel.sched_rr_timeslice_ms用来指示round robin调度进程的间隔,这个间隔默认是100ms。默认值为100ms。l kernel.sched_rt_period_usl kernel.sched_rt_runtime_ussched_rt_period与sched_rt_runtime_us一起决定了实时进程在以sched_rt_period为周期的时间内,实时进程最多能够运行的总的时间不能超过sched_rt_runtime_us。默认值:kernel.sched_rt_period_us = 1000000kernel.sched_rt_runtime_us = 950000l kernel.sched_tunable_scaling当内核试图调整sched_min_granularity_ns,sched_latency_ns和sched_wakeup_granularity_ns这三个值的时候所使用的更新方法。0:不调整1:按照cpu个数以2为底的对数值进行调整2:按照cpu的个数进行线性比例的调整默认值为1。l kernel.sched_wakeup_granularity_ns该变量表示进程被唤醒后至少应该运行的时间的基数,它只是用来判断某个进程是否应该抢占当前进程,并不代表它能够执行的最小时间(sysctl_sched_min_granularity),如果这个数值越小,那么发生抢占的概率也就越高。默认值为:15000000l kernel.sem该变量的四个值分别表示SEMMSL、SEMMNS、SEMOPM、SEMMNISEMMSL:每个信号集的最大信号数量,数据库最大PROCESS实例参数的设置值再加上10,oracle建议将SEMMSL的值设置为不少于100。SEMMNS:用于控制整个Linux系统中信号(而不是信号集)的最大数。Oracle建议将SEMMNS设置为:系统中每个数据库的PROCESSES实例参数设置值的总和,加上最大PROCESSED值的两倍,最后根据系统中Oracle数据库的数量,每个加10。使用以下计算方式来确定在Linux系统中可以分配的信号最大数量。它将是以下两者中较小的一个值:SEMMNS或SEMMSL*SEMMNISEMOPM:内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。一个信号集能够拥有每个信号集中最大数量的SEMMSL 信号,因此建议设置 SEMOPM 等于SEMMSL 。Oracle 建议将 SEMOPM 的值设置为不少于 100 。SEMMNI:内核参数用于控制整个 Linux 系统中信号集的最大数量。Oracle 建议将 SEMMNI 的值设置为不少于100。默认参数:kernel.sem = 250 32000 32 128Oracle参考值:kernel.sem = 5010 641280 5010 128l kernel.shm_rmid_forced表示是否强制将共享内存和一个进程联系在一起,这样的话可以通过杀死进程来释放共享内存。默认值为0。建议设置为1。l kernel.shmall系统上可以使用的共享内存的总量(以字节为单位)默认为18446744073692774399,可以根据内存大小设置,如64*1024*1024*1024 / 4K = 16777216l kernel.shmmax系统所允许的最大共享内存段的大小(以字节为单位)默认为18446744073692774399,可以根据内存大小设置,如64*1024*1024*1024 = 68719476736l kernel.shmni整个系统共享内存段的最大数量默认值:4096shmmax(bytes) = shmmni(page size, default 4k) * shmall (page的个数)l kernel.stack_tracer_enabled表示是否开启栈底溢出检测,0表示不启用,1表示启用。默认值为0。l kernel.sysrq该文件指定的值为非零,则激活键盘上的sysrq按键。这个按键用于给内核传递信息,用于紧急情况下重启系统。当遇到死机或者没有响应的时候,甚至连 tty 都进不去,可以尝试用 SysRq 重启计算机。默认值为16。为了安全起见,建议修改为0。l kernel.threads-max表示指定内核所能使用的线程最大数目,基本可以理解为每个进程所允许打开的线程最大数量。默认值为15703。l kernel.unknown_nmi_panic该参数的值影响的行为(非屏蔽中断处理)。当这个值为非0,未知的NMI受阻,PANIC出现。这时,内核调试信息显示控制台,则可以减轻系统中的程序挂起。默认值为0。l kernel.watchdog表示是否禁止softlockup模式和nmi_watchdog(softlockup用于唤醒watchdog)。0表示禁止;1表示开启。默认值为0。l kernel.watchdog_threshwatchdog异常等待时间,表示watchdog设备被意外关闭而不是正常,从而造成cpu soft lockup而等待的时间。默认值为10(s)。e) net.corel net.core.bpf_jit_enable基于时间规则的编译器,用于基于PCAP并使用伯克利包过滤器的用户工具,可以大幅提升复杂规则的处理性能。0:禁止1:开启2:开启并请求编译器将跟踪数据时间写入内核日志默认值为0。基于NoSQL内存数据库时,建议启用该参数。l net.core.busy_poll要在特定socket中启用繁忙轮询,将sysctl.net.core.busy_poll设置为除0以外的值,这一参数控制的是socket轮询和选择位于等待设备队列中数据包的微秒数。红帽推荐值为50。默认值为0。l net.core.busy_read要全局启用繁忙轮询,须将sysctl.net.core.busy_read设置为除了0以外的值。这一参数控制了socket 读取位于等待设备队列中数据包的微秒数,且设置了SO_BUSY_POLL选项的默认值。红帽推荐在 socket 数量少时将值设置为50, socket 数量多时将值设置为100。对于 socket 数量极大时(超过几百),请使用epoll。默认值为0。l net.core.dev_weight设备重量是指设备一次可以接收的数据包数量(单个预定处理器访问)。设备重量由dev_weight参数控制。默认值为64。l net.core.message_burst写新的警告消息所需的时间(以 1/10 秒为单位);在这个时间内所接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”您系统的人所使用的拒绝服务(Denial of Service)攻击。默认值为10。l net.core.message_cost该文件表示写每个警告消息相关的成本值。该值越大,越有可能忽略警告消息。当用来防止DOS攻击时设置为0。默认值为5。l net.core.netdev_max_backlog每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。默认值为1000。l net.core.netdev_tstamp_prequeue0:关闭,接收的数据包的时间戳在RPS程序处理之后进行标记,这样有可能时间戳会不够准确1:打开,时间戳会尽可能早的标记。默认值为1。l net.core.optmem_max表示每个套接字所允许的最大缓冲区的大小。默认值为20480,4G内存服务器推荐优化值为81920。l net.core.rmem_default设置接收TCP socket的缺省缓存大小(字节)。根据硬件自动生成值为212992l net.core.rmem_max设置接收socket的最大缓存大小(字节)根据硬件自动生成值为212992l net.core.somaxconn定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。默认值为128l net.core.wmem_default设置发送TCP socket的缺省缓存大小(字节)。根据硬件自动生成值为212992l net.core.wmem_max设置发送socket的最大缓存大小(字节)根据硬件自动生成值为212992f) net.ipv4l net.ipv4.conf.all.accept_local设置是否允许接收从本机IP地址上发送给本机的数据包0:表示不允许1:表示允许默认值为0。l net.ipv4.conf.all.accept_redirects收发接收ICMP重定向消息。对于主机来说默认为True,对于用作路由器时默认值为False。0:表示禁止1:表示允许默认值为1。建议修改为0。l net.ipv4.conf.all.accept_source_route表示是否接收源路由数据包0:表示禁止1:表示允许默认值为0。l net.ipv4.conf.all.arp_announce(定义ARP宣告时候使用的Sender IP)Define different restriction levels for announcing the local source IP address from IP packets in ARP requests sent on interface:0:表示在任意网络接口的任何本地地址。1:尽量避免不在该网络接口子网段的本地地址。当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用。此时会检查来访IP是否为所有接口上的子网段内ip之一。如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理。2:对查询目标使用最适当的本地地址。在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址。首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送。默认值为0。建议设置为2。(nginx keepalive配置时)l net.ipv4.conf.all.arp_ignore定义对目标地址为本地IP的ARP询问不同的应答模式0:回应任何网络接口上对任何本地IP地址的arp查询请求1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求(不限定ARP请求源IP地址,ARP目的IP必须为本接口IP,才回应ARP请求)2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内(限定ARP请求源IP地址必须在该接口的子网内,ARP目的IP必须为本接口IP,才回应ARP请求)3:不回应该网络界面的arp请求,而只对设置唯一和连接地址做出回应8:不回应所有(包含本地地址)的arp查询默认值为0,建议设置为1(nginx keepalive配置时)l net.ipv4.conf.all.forwarding表示是否启用端口转发功能0:表示禁止1:表示允许默认值为0。如果需要做NAT等要求,则需要打开该功能。l net.ipv4.conf.all.promote_secondaries0:当接口的主IP地址被移除时,删除所有次IP地址1:当接口的主IP地址被移除时,将次IP地址提升为主IP地址默认值为1。l net.ipv4.conf.all.rp_filter0:不通过反向路径回溯进行源地址验证。1:通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项。默认值为1。l net.ipv4.conf.all.secure_redirects仅仅接收发给默认网关列表中网关的ICMP重定向消息0:表示禁止1:表示允许默认值为1。l net.ipv4.conf.all.send_redirects允许发送重定向路由0:表示禁止1:表示允许默认值为1。建议修改为0。注:net.ipv4.conf.all|default|ethX|lo下选项都是一样的。l net.ipv4.icmp_echo_ignore_all忽略所有接收到的icmp echo请求的包(会导致机器无法ping通)0:表示不忽略1:表示忽略默认值为0。l net.ipv4.icmp_echo_ignore_broadcasts忽略所有接收到的icmp echo请求的广播0:不忽略1:忽略默认值为1。l net.ipv4.icmp_ignore_bogus_error_responses错误消息防护,会警告你关于网络中的ICMP异常0:记录到系统日志中1:忽略默认值为1。l net.ipv4.icmp_ratelimit限制发向特定目标的匹配icmp_ratemask的ICMP数据报的最大速率。配合icmp_ratemask使用。0:没有任何限制0:表示指定时间内中允许发送的个数。(以jiffies为单位,一般为10ms)默认值为1000。l net.ipv4.ip_forward是否打开ipv4的IP转发。0:禁止1:打开默认为0,表示不启用端口转发。注:建议在开启该功能,同时还要针对net.ipv4.conf.all|default|ethX.forwarding几个选项一起设置。l net.ipv4.ip_local_port_range本地发起连接时使用的端口范围,tcp初始化时会修改此值默认为:32768 60999。建议至少为1000 65535l net.ipv4.ip_local_reserved_ports表示设置预留的端口,这些端口不是会随机分配出去。默认为空例:net.ipv4.ip_local_reserved_ports = 1986, 11211-11220l net.ipv4.ip_no_pmtu_disc表示在全局范围内关闭路径MTU探测功能0:表示开启1:表示关闭默认值为0。l net.ipv4.ip_nonlocal_bind如果您想让应用程式能够捆绑到一个不属于该系统的IP地址就需要设定这里。(当机器使用非固定/动态的网络连接的时候,或者离线调试程序的时候,当线路断掉之后,该服务仍可启动而且捆绑到特定的位址之上。)keepalive可能需要用到该参数。0:表示禁止1:表示允许默认值为0。l net.ipv4.ipfrag_high_threshl net.ipv4.ipfrag_low_thresh表示用于重组IP分段的内存分配最高值和最低值。l net.ipv4.ipfrag_max_dist相同的源地址ip碎片数据报的最大数量. 这个变量表示在ip碎片被添加到队列前要作额外的检查.如果超过定义的数量的ip碎片从一个相同源地址到达,那么假定这个队列的ip碎片有丢失,已经存在的ip碎片队列会被丢弃,如果为0关闭检查。默认值为64。l net.ipv4.route.gc_timeout设置一个路由表项的过期时长(秒)。默认值为300秒。建议修改100。g) net.ipv4.tcpl net.ipv4.tcp_abort_on_overflow当 tcp 建立连接的 3 次握手完成后,将连接置入 ESTABLISHED 状态并交付给应用程序的 backlog 队列时,会检查 backlog 队列是否已满。若已满,通常行为是将连接还原至 SYN_ACK 状态,以造成 3 路握手最后的 ACK 包意外丢失假象 这样在客户端等待超时后可重发 ACK 以再次尝试进入 ESTABLISHED 状态 作为一种修复/重试机制。如果启用tcp_abort_on_overflow则在检查到 backlog 队列已满时,直接发 RST 包给客户端终止此连接 此时客户端程序会收到 104 Connection reset by peer 错误。0:表示不启用1:表示启用默认值为0。l net.ipv4.tcp_adv_win_scalelinux使用net.ipv4.tcp_adv_win_scale(对应文件/proc/sys/net/ipv4/tcp_adv_win_scale)指出应用缓存的比例。1) if tcp_adv_win_scale 0:应用缓存= buffer / (2tcp_adv_win_scale),tcp_adv_win_scale默认值为2,表示缓存的四分之一用于应用缓存,可用接收窗口占四分之三。2) if tcp_adv_win_scale = 0:应用缓存= buffer - buffer/2(-tcp_adv_win_scale),即接收窗口=buffer/2(-tcp_adv_win_scale),如果tcp_adv_win_scale=-2,接收窗口占接收缓存的四分之一。如何算接收窗口呢?BDP(bandwidth-delay product,带宽时延积) = bandwith(bits/sec) * delay(sec),代表网络传输能力,为了充分利用网络,最大接收窗口应该等于BDP;delay = RTT/2。以我们的机房为例,同机房的带宽为30Gbit/s,两台机器ping可获得RTT大概为0.1ms,那BDP=(30Gb/1000) * 0.1 / 2 = 1.5Mbbuffer = 1.5Mb * 4 / 3 = 2Mb默认值为1。l net.ipv4.tcp_app_win保留max(window/2tcp_app_win, mss)数量的窗口用于应用缓冲。当为0时表示不需要缓冲。默认值为31。l net.ipv4.tcp_challenge_ack_limit默认值为1000。内核3.6至4.7之间的操作系统,建议调整该值可以使得攻击者不能合理地达到主机。比如999999999l net.ipv4.tcp_congestion_control表示TCP拥塞控制算法1)reno是最基本的拥塞控制算法,也是TCP协议的实验原型。2)bic适用于rtt较高但丢包极为罕见的情况,比如北美和欧洲之间的线路,这是2.6.8到2.6.18之间的Linux内核的默认算法。3)cubic是修改版的bic,适用环境比bic广泛一点,它是2.6.19之后的linux内核的默认算法。4)hybla适用于高延时、高丢包率的网络,比如卫星链路同样适用于中美之间的链路。默认值为cubic。hybla的使用方法:/sbin/modprobetcp_hyblavi/etc/sysctl.confnet.ipv4.tcp_congestion_control=hyblal net.ipv4.tcp_dsack表示是否允许TCP发送“两个完全相同”的SACK。0:禁止1:启用默认值为1。l net.ipv4.tcp_ecn表示显式拥塞通告。1:表示套接字支持ECN协议2:表示发送在接收到ECE报文后,设置该标志,并将拥塞状态机设置为TCP_CA_CWR状态4:接收端处于该状态,将在所有ACK报文中添加ECE,直到接收到CWR报文8:是否接收到过ECT报文默认值为2。建议一般情况下不修改。l net.ipv4.tcp_fack表示是否打开FACK拥塞避免和快速重传功能。0:禁止1:打开默认值为1。l net.ipv4.tcp_fastopen三次握手会造成一个RTT的延迟,因此TFO(tcp fast open)的目标就是去除这个延迟,在三次握手期间也能交换数据。0:表示关闭该功能1:表示开启客户端TFO功能2:表示开启服务器端TFO功能3:表示同时开启客户端和服务器端TFO功能默认为0。建议高流量高并发服务器设置为3。l net.ipv4.tcp_fin_timeout本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。默认值60。建议修改为30或更低。l net.ipv4.tcp_keepalive_*net.ipv4.tcp_keepalive_intvl = 75net.ipv4.tcp_keepalive_probes = 9net.ipv4.tcp_keepalive_time = 7200以上三个参数合起来含义:如果某个TCP连接在idle 2个小时后,内核才发起probe。如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效。建议修改值:net.ipv4.tcp_keepalive_intvl = 15net.ipv4.tcp_keepalive_probes = 3net.ipv4.tcp_keepalive_time = 600l net.ipv4.tcp_limit_output_bytes每个套接字TCP队列的大小限制TCP套接字队列大小限制默认值为262144。l net.ipv4.tcp_low_latency允许 TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项一般情形是的禁用。(但在构建Beowulf 集群的时候,打开它很有帮助)0:关闭1:开启默认值为0。l net.ipv4.tcp_max_orphans系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击,千万不要依赖这个或是人为的降低这个限制。因为增加过大会导致吃掉过多内存。默认值:8192。l net.ipv4.tcp_max_syn_backlog对于那些依然还未获得客户端确认的连接请求,需要保存在队列中最大数目。加大该值,可以容纳更多的等待连接的网络连接数。默认值:128。推荐修改该,如8192、16384、262144。同时该参数设置时,应不能比net.core.somaxconn数值大l net.ipv4.tcp_max_tw_buckets系统在同时所处理的最大timewait sockets 数目。如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默认值为8192。该参数可以适当调大,同时该不应该比net.ipv4.ip_local_port_range端口范围数值大很多。l net.ipv4.tcp_memtcp_mem(3个INTEGER变量):low, pressure, high,其单位是页,1页等于4096字节1) low:当TCP使用低于该值的内存页面数时,TCP不会考虑释放内存。2) pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。3) high:允许所有tcp sockets用于排队缓冲数据报的页面量,当内存占用超过此值,系统拒绝分配socket,后台日志输出“TCP: too many of orphaned sockets”。一般情况下这些值是在系统启动时根据系统内存数量计算得到的。默认值:46002 61339 92004(该值根据内存大小自动计算的),该数值建议与net.ipv4.tcp_rmem和net.ipv4.tcp_wmem同时考虑使用,并在实际环境按需修改。l net.ipv4.tcp_moderate_rcvbuf接收数据时是否调整接收缓存0:不调整1:调整默认值为1。l net.ipv4.tcp_mtu_probing控制TCP分组层路径MTU发现。0:表示不启用1:表示默认不启用,当有一ICMP黑洞检测时启用2:总是启用默认值为0。建议设置为1。l net.ipv4.tcp_no_metrics_save默认情况下tcp会在连接关闭时也就是LAST_ACK状态保存各种连接信息到路由缓存中,新建立的连接可以使用这些条件来初始化。通常这会增加总体的系统性能,但是有些时候也会引起性能下降。如果开启该选项,TCP 在关闭的时候不缓存这些指标。0:关闭1:开启默认值为0。按需要考
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 临时分类 > 人文社科


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!