LINUX内核参数优化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux内核参数优化

Sysctl命令及linux内核参数调整

一、Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现。

命令格式:

sysctl[-n][-e]-w variable=value

sysctl[-n][-e]-p(default/etc/sysctl.conf)

sysctl[-n][-e]–a

常用参数的意义:

-w临时改变某个指定参数的值,如

#sysctl-w net.ipv4.ip_forward=1

-a显示所有的系统参数

-p从指定的文件加载系统参数,默认从/etc/sysctl.conf文件中加载,如:#echo1>/proc/sys/net/ipv4/ip_forward

#sysctl-w net.ipv4.ip_forward=1

以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了#service network restart

命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf 文件,将net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1

二、linux内核参数调整:linux内核参数调整有两种方式

方法一:修改/proc下内核参数文件内容,不能使用编辑器来修改内核参数文件,理由是由于内核随时可能更改这些文件中的任意一个,另外,这些内核参数文件都是虚拟文件,实际中不存在,因此不能使用编辑器进行编辑,而是使用echo 命令,然后从命令行将输出重定向至/proc下所选定的文件中。如:将timeout_timewait参数设置为30秒:

#echo30>/proc/sys/net/ipv4/tcp_fin_timeout

参数修改后立即生效,但是重启系统后,该参数又恢复成默认值。因此,想永久更改内核参数,需要修改/etc/sysctl.conf文件

方法二.修改/etc/sysctl.conf文件。检查sysctl.conf文件,如果已经包含需要修改的参数,则修改该参数的值,如果没有需要修改的参数,在sysctl.conf文件中添加参数。如:

net.ipv4.tcp_fin_timeout=30

保存退出后,可以重启机器使参数生效,如果想使参数马上生效,也可以执行如下命令:

#sysctl-p

三、sysctl.conf文件中参数设置及说明

proc/sys/net/core/wmem_max

最大socket写buffer,可参考的优化值:873200

/proc/sys/net/core/rmem_max

最大socket读buffer,可参考的优化值:873200

/proc/sys/net/ipv4/tcp_wmem

TCP写buffer,可参考的优化值:8192436600873200

/proc/sys/net/ipv4/tcp_rmem

TCP读buffer,可参考的优化值:32768436600873200

/proc/sys/net/ipv4/tcp_mem

同样有3个值,意思是:

net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力.

net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段.

net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket.

上述内存单位是页,而不是字节.可参考的优化值是:78643210485761572864

/proc/sys/net/core/netdev_max_backlog

进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到1000

/proc/sys/net/core/somaxconn

listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到256.

/proc/sys/net/core/optmem_max

socket buffer的最大初始化值,默认10K

/proc/sys/net/ipv4/tcp_max_syn_backlog

进入SYN包的最大请求队列.默认1024.对重负载服务器,可调整到2048

/proc/sys/net/ipv4/tcp_retries2

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

/proc/sys/net/ipv4/tcp_keepalive_time

/proc/sys/net/ipv4/tcp_keepalive_intvl

/proc/sys/net/ipv4/tcp_keepalive_probes

这3个参数与TCP KeepAlive有关.默认值是:

tcp_keepalive_time=7200seconds(2hours)

tcp_keepalive_probes=9

tcp_keepalive_intvl=75seconds

意思是如果某个TCP连接在idle2个小时后,内核才发起probe.如果probe9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.对服务器而言,显然上述值太大.可调整到:

/proc/sys/net/ipv4/tcp_keepalive_time1800

/proc/sys/net/ipv4/tcp_keepalive_intvl30

/proc/sys/net/ipv4/tcp_keepalive_probes3

/proc/sys/net/ipv4/ip_local_port_range

指定端口范围的一个配置,默认是3276861000,已够大.

net.ipv4.tcp_syncookies=1

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

net.ipv4.tcp_tw_reuse=1

表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle=1

相关文档
最新文档