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状态超时时间,超过该时间就清除该连接,同上

Linux Linux内核参数调优的更多相关文章

  1. (转)linux IO 内核参数调优 之 参数调节和场景分析

    1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...

  2. linux IO 内核参数调优 之 原理和参数介绍

    1.  page cache linux操作系统默认情况下写都是有写缓存的,可以使用direct IO方式绕过操作系统的写缓存.当你写一串数据时,系统会开辟一块内存区域缓存这些数据,这块区域就是我们常 ...

  3. inux IO 内核参数调优 之 参数调节和场景分析

    http://backend.blog.163.com/blog/static/2022941262013112081215609/ http://blog.csdn.net/icycode/arti ...

  4. Linux上TCP的几个内核参数调优

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

  5. linux 服务器安全加固和内核参数调优 nf_conntrack

    0.内部设置跳板机,服务器只能通过跳板机登录1.禁止ROOT用户远程登录和登录端口 禁止ROOT用户远程登录 .打开 /etc/ssh/sshd_config PermitRootLogin no . ...

  6. Linux内核参数调优

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

  7. LINUX内核参数调优集锦

    1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 1.linux内核参数注释 以下表格中红色字体为常用优化参数 根据参数文件所处目录不同而进行分表整理 下列文件所在目录: ...

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

    changing a readonly file (linu single user mode)

  9. (转)linux下jvm 参数调优

    1.基本概念. JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn512m -XX:PermSize=128m -Xss256k -XX:+DisableE ...

随机推荐

  1. 谷歌浏览器怎么FQ(一)(想使用谷歌浏览器应用商城的小伙伴这边看)

    谷歌浏览器的应用商城里本身有很多不错的扩展程序和插件,比如Wappalyzer(能够识别某个网站用的什么框架和库)广告终结者(能屏蔽大部分浮动,弹窗,甚至视频广告)等 但是谷歌因为某些原因需要FQ以后 ...

  2. [CocoaPods]使用Pod Lib创建

    入门 我们将使用pod lib create引导过程来创建整个pod .那么让我们从初始命令开始: pod lib create MyLibrary 注意:要使用您自己的pod-template,您可 ...

  3. 测试工具之RobotFramework安装

    Robot Framework很多公司再用,图形化界面,类表格填写关键字和参数,几乎不需要编码知识,上手很快 最近看到某满公司使用的就是这个工具,特地看了下,确实很简单,对于初入测试行业的人来说是个很 ...

  4. dart之旅(二)- 内建类型

    目录 number 类型 字符串 布尔类型 像大多数语言一样,dart 也提供了 number,string,boolean 等类型,包括以下几种: numbers strings booleans ...

  5. tomcat8 性能优化

    一.编辑配置文件:vim /opt/tomcat/conf/server.xml打开默认被注释的连接池配置:默认值: <!-- <Executor name="tomcatThr ...

  6. 深度学习论文翻译解析(四):Faster R-CNN: Down the rabbit hole of modern object detection

    论文标题:Faster R-CNN: Down the rabbit hole of modern object detection 论文作者:Zhi Tian , Weilin Huang, Ton ...

  7. JavaWeb学习 (二十五)————监听器(Listener)

    一.监听器介绍 1.1.监听器的概念

  8. Go语言学习笔记(二) [变量、类型、关键字]

    日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号.   2.Go 同其他语言不同的地方在于变 ...

  9. Django之模型层(单表操作)

    一.ORM简介 MVC和MTV框架中包含一个重要部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库. ORM是‘对象-关系- ...

  10. WebFrom 小程序【分页功能 】

    实现分页展示功能 基本功能:上一页.下一页.首页.尾页.跳转 两个重要的变量 1.每页显示几条数据  2.现在是第几页    方法 } /*表格样式*/ .tab { width: %; backgr ...