您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

CentOS5.x系统内核优化详解

添加时间:2017-1-15 21:12:04  添加: 思海网络 
主要是针对/etc/sysctl.conf里的各项进行详细解析。

系统优化项:

kernel.sysrq = 0

#使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭 

 kernel.core_uses_pid = 1

#控制core文件的文件名是否添加pid作为扩展 

kernel.msgmnb = 65536

#每个消息队列的大小限制,以字节为单位

kernel.msgmni = 16 

#整个系统最大消息队列数量限制,此值可以根据需要增大.

kernel.msgmax = 65536

#每个消息的最大size

kernel.shmmax = 68719476736

#可用共享内存段的大小(单位:字节)限制

kernel.shmall = 4294967296

#所有内存大小(单位:页,1页 = 4Kb) 

kernel.shmmni = 4096

#控制共享内存段总数,目前的参数值是4096


kernel.sem = 250 32000 100 128

或kernel.sem =5010 641280 5010 128

#SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每次semop系统调用操作数),SEMMNI(系统信号量集最大数量)

fs.aio-max-nr = 65536或取(1048576)(3145728)值

# 在系统级支持异步I/O,当系统进行大量的连续IO会使用较大的值

fs.aio-max-size = 131072  

#异步IO的最大大小

fs.file-max = 65536        

#表示文件句柄的最大数量

net.core.wmem_default = 8388608

#为TCP socket预留用于发送缓冲的内存默认值(单位:字节)

net.core.wmem_max = 16777216

#为TCP socket预留用于发送缓冲的内存最大值(单位:字节)

net.core.rmem_default = 8388608

#为TCP socket预留用于接收缓冲的内存默认值(单位:字节) 

net.core.rmem_max = 16777216

#为TCP socket预留用于接收缓冲的内存最大值(单位:字节)


net.core.somaxconn = 262144

#listen(函数)的默认参数,挂起请求的最大数量限制 

网络优化项:

net.ipv4.ip_forward = 0

#禁用包过滤、转发功能 

net.ipv4.tcp_syncookies = 1

#开启SYN COOKIES功能

net.ipv4.conf.default.rp_filter = 1

#启用源路由核查功能 

net.ipv4.conf.default.accept_source_route = 0

#禁用所有IP源路由 

net.ipv4.route.gc_timeout = 100

#路由缓存刷新频率, 当一个路由失败后多长时间跳到另一个默认是300

net.ipv4.ip_local_port_range = 1024 65000

#对外连接端口范围,缺省情况下很小:32768到61000,改为1024到65000。

net.ipv4.tcp_max_tw_buckets = 6000

#表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息,默认为180000

net.ipv4.tcp_sack = 1

#在高延迟的连接中,SACK 对于有效利用所有可用带宽尤其重要。高延迟会导致在任何给定时刻都有大量正在传送的包在等待应答。在 Linux 中,除非得到应答或不再需要,这些包将一直存放在重传队列中。这些包按照序列编号排队,但不存在任何形式的索引。当需要处理一个收到的 SACK 选项时,TCP 协议栈必须在重传队列中找到应用了 SACK 的包。重传队列越长,找到所需的数据就越困难。一般可关闭这个功能。选择性应答在高带宽延迟的网络连接上对性能的影响很大,但也可将其禁用,这不会牺牲互操作性。将其值设置为 0 即可禁用 TCP 协议栈中的 SACK 功能。

net.core.netdev_max_backlog = 262144

#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目 

net.ipv4.tcp_window_scaling = 1

#TCP窗口扩大因子支持. 如果TCP窗口最大超过65535(64K), 设置该数值为1 。Tcp窗口扩大因子是一个新选项,一些新的实现才会包含该选项,为了是新旧协议兼容,做了如下约定:1、只有主动连接方的第一个syn可以发送窗口扩大因子;2、被动连接方接收到带有窗口扩大因子的选项后,如果支持,则可以发送自己的窗口扩大因子,否则忽略该选项;3、如果双方支持该选项,那么后续的数据传输则使用该窗口扩大因子。如果对方不支持wscale,那么它不应该响应 wscale 0,而且在收到46的窗口时不应该发送1460的数据;如果对方支持wscale,那么它应该大量发送数据来增加吞吐量,不至于通过关闭wscale来解决问题,如果是使用普遍的协议实现,那么就需要关闭wscale来提高性能并以防万一。

net.ipv4.tcp_rmem = 4096 87380 4194304

#TCP读buffer 

net.ipv4.tcp_wmem = 4096 16384 4194304

#TCP写buffer

net.ipv4.tcp_max_orphans = 3276800

#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

net.ipv4.tcp_max_syn_backlog = 262144

#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数

net.ipv4.tcp_timestamps = 0

#时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。

net.ipv4.tcp_synack_retries = 1

#为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。

net.ipv4.tcp_syn_retries = 1

#对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5

net.ipv4.tcp_tw_recycle = 1

#启用timewait快速回收

net.ipv4.tcp_tw_reuse = 1

#开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。

net.ipv4.tcp_mem = 94500000 915000000 927000000

#1st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)

net.ipv4.tcp_fin_timeout = 1

#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间为15秒

net.ipv4.tcp_keepalive_time = 60

#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为1分钟。

net.ipv4.tcp_keepalive_probes= 1

net.ipv4.tcp_keepalive_intvl= 2

#意思是如果某个TCP连接在idle 2分钟后,内核才发起probe.如果probe 1次(每次2秒)不成功,内核才彻底放弃,认为该连接已失效. 

最后使配置立即生效,可使用如下命令:

#/sbin/sysctl -p

我们在性能优化时,首先要设定性能优化需要达到的目标,然后寻找瓶颈,调整参数,达到优化目的。寻找性能瓶颈是比较辛苦的,要从大范围,通过很多用例和测试,不断的缩小范围,最终确定瓶颈点, 有很多的参数要边测试边调整,这就需要我们更多的耐心和坚持。

实例:

temp=`cat /etc/sysctl.conf|grep -c net.ipv4.tcp_max_syn_backlog`

if [ $temp -eq 0 ]

then

echo "# Add" >> /etc/sysctl.conf

echo "net.ipv4.tcp_max_syn_backlog = 65536" >> /etc/sysctl.conf

echo "net.core.netdev_max_backlog =  32768" >> /etc/sysctl.conf

echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf

echo "net.core.wmem_default = 8388608" >> /etc/sysctl.conf

echo "net.core.rmem_default = 8388608" >> /etc/sysctl.conf

echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf

echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf

echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf

echo "net.ipv4.tcp_synack_retries = 2" >> /etc/sysctl.conf

echo "net.ipv4.tcp_syn_retries = 2" >> /etc/sysctl.conf

echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf

#net.ipv4.tcp_tw_len = 1

echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf

echo "net.ipv4.tcp_mem = 94500000 915000000 927000000" >> /etc/sysctl.conf

echo "net.ipv4.tcp_max_orphans = 3276800" >> /etc/sysctl.conf

#net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

echo "net.ipv4.ip_local_port_range = 1024  65535" >> /etc/sysctl.conf

关键字:CentOS、系统、内核优化
分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站