Linux内核参数调优

by:授客 QQ1033553122

关于调优的建议:

1、出错时,可以查看操作系统日志,可能会找到一些有用的信息

2、尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“调优”后,性能反而下降,事务出错数反而增加,所以,调优的时候可以考虑逐个参数进行调优,然后对比效果。

说明:我也不是很懂,参考自网络整理了下可能需要调整的一些参数

net.core.wmem_max=124928 发送套接字缓冲区大小的最大值(以字节为单位),参考值873200

net.core.rmem_max=124928 接收套接字缓冲区大小的最大值(以字节为单位),参考值873200

net.ipv4.tcp_wmem=4096 16384  4194304  为自动调优定义socket使用的内存.第一个值是为socket发送缓冲区分配的最少字节数;第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)

net.ipv4.tcp_rmem=4096 87380  4194304  为自动调优定义socket使用的内存.第一个值是为socket接收缓冲区分配的最少字节数;第二个值是默认值(该值会被rmem_default覆盖),  缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)

net.ipv4.tcp_mem=177888 436600 873200  确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB).第一个值是内存使用的下限,低于此值,TCP没有内存压力;第二个值是内存压力模式开始对缓冲区使用应用压力的上限,在此值下,进入内存压力阶段; 第三个值是内存使用的上限. 高于此值,TCP拒绝分配socket,将报文丢弃,从而减少对内存的使用.对于较大的商业数据平台可以增大这些值(注意,其单位是内存页而不是字节)

net.core.netdev_max_backlog=1000 每个网卡接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.somaxconn=128  用来限制监听(LISTEN)队列最大数据包的数量,默认是128,超过这个数量就会导致链接超时或者触发重传机制.对繁忙的服务器,增加该值有助于网络性能.可调整到256

net.core.optmem_max=20480 socket buffer的最大初始化值,默认20k

net.core.netdev_max_backlog=1000,修改16384,每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目,对重负载服务器而言,该值需要调高一点

net.core.wmem_default=124928   默认的发送窗口大小(以字节为单位)

net.core.rmem_default=124928  默认的接收窗口大小(以字节为单位)

net.core.wmem_max=124928      最大的TCP数据发送缓冲,参考值 873200

net.core.rmem_max=124928      最大的TCP数据接收缓冲,参考值873200

net.ipv4.tcp_max_syn_backlog=2048  默认1024,对重负载服务器,可调整到2048,以以容纳更多等待连接的网络连接

net.ipv4.tcp_retries2=5 TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,尽早释放内核资源

net.ipv4.tcp_keepalive_time=7200

net.ipv4.tcp_keepalive_probes=9

net.ipv4.tcp_keepalive_intvl=75

意思是如果某个TCP连接在idle 2个小时(7200s)后,内核才发起探测(probe)。如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效,对服务器而言,显然上述值太大. 参考值如下:

net.ipv4.tcp_keepalive_time=1800

net.ipv4.tcp_keepalive_probes=3

net.ipv4.tcp_keepalive_intvl=30

net.ipv4.ip_local_port_range="1024 65000" 表示用于向外连接的端口范围。参考值:1024 65000

net.ipv4.tcp_tw_reuse=1 表示开启重用。允许将处于TIME-WAIT 的socket重新用于新的TCP连接,默认为0,表示关闭,根据TCP/IP协议,连接断开之后,端口不会立刻被释放,而是处于TIME_WAIT状态,等待两分钟半后,才会被释放掉,才能被新连接使用,大量并发的情况下,如果已被占用的端口号未被释放,部分新建连接因为无法分配到端口号而失败。

通过配置TCP_TW_REUSE参数,来释放TIME_WAIT状态的端口号给新连接使用

net.ipv4.tcp_tw_recycle=1  表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout=30 默认值60,这个参数决定了它保持在FIN-WAIT-2状态的时间,参考值 30(一般来说FIN-WAIT-2的连接也极少)

net.ipv4.tcp_max_tw_buckets=5000 默认为 131072,参考值5000,表示系统同时保持TIME_WAIT socket的最大数量,如果超过这个数字,TIME_WAIT socket将立刻被清除并打印警告信息。事实上做NAT的时候最好可以适当地增加该值)

对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量

net.ipv4.tcp_sack=1 默认开启,启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用

net.ipv4.tcp_fack=1 仅sack=1时起作用,默认开启,启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。

net.ipv4.tcp_timestamps=1  默认开启,TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT 的计算,为实现更好的性能应该启用这个选项。

net.ipv4.tcp_window_scaling=1  默认开启,启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。

net.ipv4.tcp_low_latency=0 允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。

net.ipv4.tcp_syn_retries=2 对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间,对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接, 是由tcp_retries1决定的

net.ipv4.tcp_synack_retries=2 默认5,对于远端的连接请求SYN,内核会发送SYN + ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手( threeway handshake)机制的第二个步骤。这里决定内核在放弃连接之前所送出的 SYN+ACK 数目。不应该大于255,默认值是5,对应于180秒左右时间,可修改为2

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

net.ipv4.tcp_syncookies=0 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

以下几个参数文件需要打开防火墙才会存在

net.netfilter.nf_conntrack_max=65536   系统支持的最大ipv4连接数,默认65536(事实上这也是理论最大值),同时这个值和你的内存大小有关,如果内存128M,这个值最大8192,1G以上内存这个值都是默认65536,这个值受/proc/sys/net/ipv4/ip_conntrack_max限制

net.netfilter.nf_conntrack_tcp_timeout_established=432000   已建立的tcp连接的超时时间,默认432000,也就是5天。影响:这个值过大将导致一些可能已经不用的连接常驻于内存中,占用大量链接资源,从而可能导致NAT ip_conntrack: table full的问题。建议:对于NAT负载相对本机的 NAT表大小很紧张的时候,可能需要考虑缩小这个值,以尽早清除连接,保证有可用的连接资源;如果不紧张,不必修改

net.netfilter.nf_conntrack_tcp_timeout_time_wait=120  time_wait状态超时时间,超过该时间就清除该连接,保持不变

net.netfilter.nf_conntrack_tcp_timeout_close_wait=60  close_wait状态超时时间,超过该时间就清除该连接,保持不变

net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120  fin_wait状态超时时间,超过该时间就清除该连接,同上

转载于:https://www.cnblogs.com/shouke/p/10157734.html

Linux Linux内核参数调优相关推荐

  1. Linux Netfilter 内核参数调优

    Netfilter 是linux 内在的一个软件框架,用来记录管理网络数据包,Netfilter提供了5个hook 来记录管理网络包. Netfilter进行包的管理,则需要记录每个连接的状态信息.这 ...

  2. java linux 调用32位so_Linux上TCP的几个内核参数调优

    Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优.光TCP的调优参数就有50多个.在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数.在此分享出来,希望对大家 ...

  3. linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms

    linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms changing a readonly file (linu single user mode) ...

  4. Linux云计算架构-系统调优【CPU、IO、网络、内核参数调优】

    文章目录 Linux云计算架构-系统调优[CPU.IO.网络.内核参数调优] 1. CPU调优 2. IO调优 3. 网络调优 3.1 网络冗余(主备模式) 3.2 负载均衡模式 4. 内核参数调优 ...

  5. Linux内核参数调优以应对SYN攻击

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Linux内核参数调优以应对SYN攻击. 一.SYN攻击简介 所谓SYN攻击,即利用TCP三次握手原理,向服务器发送大量的SYN数据包,却不响应 ...

  6. Linux Page Cache参数调优在kafka中的应用

    文章目录 完整优化方案地址: 一.优化背景 二.基本概念 1.什么是Page Cache? 2.读Cache 3.写Cache 4.Page Cache缓存查看工具 三.参数调优 1.如何查看Page ...

  7. CentOS7 内核版本3.10 内核参数调优参考

    查看网络上大部分内核参数文档,整理出如下内容,如有错误请指正,过程很辛苦,转载请附上原地址. 前言 常用的Linux内核参数,具体优化值要参考应用场景. 通过/var/log/message查看系统日 ...

  8. CPU-IO-网络-内核参数调优

    一. 有关使用CPU资源的调优 1. nice概述 在LINUX系统中,Nice值的范围从-20到+19(不同系统的值范围是不一样的),正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的 ...

  9. Linux内核参数调优

    用法: vim /etc/sysctl.conf#修改内容sysctl -p #生效 相关参数仅供参考,具体数值还需要根据机器性能,应用场景等实际情况来做更细微调整. net.core.netdev_ ...

  10. linux中tcp连接内核参数调优somaxconn

    永久生效: vim /etc/sysctl.conf net.core.somaxconn=32768 sysctl -p 立即生效: sysctl -w net.core.somaxconn=327 ...

最新文章

  1. 浅谈Redis和Hbase
  2. 一道终身受用的测试题
  3. cube、rollup及exec的用法实例
  4. 如何通过本地化事件正确实现微服务内部强一致性,事件总线跨微服务间最终一致性...
  5. Eclipse 下如何引用另一个项目的资源文件
  6. Qt实践录:一些界面设计的记录示例
  7. java web 编程技术 pdf_Java WEB编程技术.pdf
  8. SQL 优化极简法则,你掌握几个?
  9. android之获取手机号码、获取手机操作系统版本号
  10. asp.net MVC初学体会.
  11. jenkins war包_Jenkins 集成postman 自动化运行接口测试用例
  12. SQL查询时间段方法
  13. 路由配置与管理——BGP路由配置与管理1
  14. Matlab系列之GUI设计实例1
  15. ROS系统学习5---OpenCV的使用
  16. win10系统盘多大合适_不会安装win10原版系统?3招教你轻松学会重装系统,超详细教程...
  17. Bootstrap3动态添加的元素tooltip不生效
  18. 用计算机计算下面各题,四下计算机练习题汇总
  19. Linux之必备软件安装(搜狗输入法、qq等)
  20. 计算机文化期末试卷,计算机文化基础期末试卷.pdf

热门文章

  1. Linux与Xshell:登陆服务器与后台执行程序
  2. mysql实现主从复制的方式_mysql实现主从复制、读写分离的配置方法(二)
  3. python怎么写爬虫_如何用python写爬虫
  4. 完成的定义 Definition of Done
  5. Windows Registry
  6. [Linux学习]更改默认启动图形界面或命令行
  7. YUV、YUV420P(YU12和YV12)、NV12、NV21编码
  8. Java 学习/面试指南
  9. 原生JavaScript(js)手把手教你写轮播图插件(banner)
  10. 数据--第34课 - 二叉树的深层性质