问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一般优化linux的内核,需要优化什么参数

发布网友 发布时间:2022-04-24 12:31

我来回答

2个回答

热心网友 时间:2022-05-05 08:38

首先要知道一点所有的TCP/IP的参数修改是临时的,因为它们都位于/PROC/SYS/NET目录下,如果想使参数长期保存,可以通过编辑/ETC/SYSCTL.CONF文件来实现,这里不做详细说明,只针对Linux的TCPIP内核参数优化列举相关参数:

1、为自动调优定义socket使用的内存

2、默认的TCP数据接收窗口大小(字节)

3、最大的TCP数据接收窗口

4、默认的TCP发送窗口大小

5、最大的TCP数据发送窗口

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

7、定义了系统中每一个端口最大的监听队列长度

8、探测消息未获得相应时,重发该消息的间隔时间

9、在认定tcp连接失效之前,最多发送多少个keepalive探测消息等。

相关优化参数代码:

sh#  net.core.wmem_default 发送缓存区预留内存默认大小 默认值 16k

#  net.core.rmem_default 接受缓存区预留内存默认大小 默认值 16k

#  net.core.wmem_max 发送缓存区预留内存最大值 默认值 128k

#  net.core.rmem_max 接受缓存区预留内存最大值 默认值 128k

#  net.unix.max_dgram_qlen 进程间通信发送数据, 默认10

#  net.ipv4.tcp_syncookies

#  net.ipv4.syn_retries

#  net.ipv4.tcp_fin_timeout 如果socket连接由本端关闭,则保持在FIN-WAIT-2状态的时间

#  net.ipv4.tcp_keepalive_time 当keepalive起作用的时候,tcp发送keepalive消息的频度,默认2小时

#  net.ipv4.route_max_size 路由缓存最大值

热心网友 时间:2022-05-05 09:56

方法只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效,如果不是这种情况下,效果可能不明显。可以使用netstat命令去查TIME_WAIT状态的连接状态,输入下面的组合命令,查看当前TCP连接的状态和对应的连接数量:
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
这个命令会输出类似下面的结果:
LAST_ACK 16
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18098
我们只用关心TIME_WAIT的个数,在这里可以看到,有18000多个TIME_WAIT,这样就占用了18000多个端口。要知道端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要调整下Linux的TCP内核参数,让系统更快的释放TIME_WAIT连接。

用vim打开配置文件:#vim /etc/sysctl.conf
在这个文件中,加入下面的几行内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
输入下面的命令,让内核参数生效:#sysctl -p
简单的说明上面的参数的含义:
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
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout
#修改系统默认的 TIMEOUT 时间。
在经过这样的调整之后,除了会进一步提升服务器的负载能力之外,还能够防御小流量程度的DoS、CC和SYN攻击。
此外,如果你的连接数本身就很多,我们可以再优化一下TCP的可使用端口范围,进一步提升服务器的并发能力。依然是往上面的参数文件中,加入下面这些配置:
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
#这几个参数,建议只在流量非常大的服务器上开启,会有显著的效果。一般的流量小的服务器上,没有必要去设置这几个参数。
net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 10000 65000
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 6000
#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默 认为180000,改为6000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT的最大数量,避免Squid服务器被大量的TIME_WAIT拖死。
内核其他TCP参数说明:
net.ipv4.tcp_max_syn_backlog = 65536
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。
net.core.netdev_max_backlog = 32768
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn = 32768
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn*到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216 #最大socket读buffer,可参考的优化值:873200
net.core.wmem_max = 16777216 #最大socket写buffer,可参考的优化值:873200
net.ipv4.tcp_timestsmps = 0
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。
net.ipv4.tcp_synack_retries = 2
#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_syn_retries = 2
#在内核放弃建立连接之前发送SYN包的数量。
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
# 开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。
net.ipv4.tcp_wmem = 8192 436600 873200
# TCP写buffer,可参考的优化值: 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
# TCP读buffer,可参考的优化值: 32768 436600 873200
net.ipv4.tcp_mem = 94500000 91500000 92700000
# 同样有3个值,意思是:
net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力。
net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段。
net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。
上述内存单位是页,而不是字节。可参考的优化值是:786432 1048576 1572864
net.ipv4.tcp_max_orphans = 3276800
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。
如果超过这个数字,连接将即刻被复位并打印出警告信息。
这个*仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,
更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_fin_timeout = 30
#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
银耳茉莉汤制作要诀 茉莉银耳羹制作过程 银耳饮料茉莉银耳汤 发几张很好看的手机壁纸来 无纺壁纸的优缺点有哪些? 移动破碎机价格多少钱一台,移动破碎机需要办理什么手续 你知道窝瓜和倭瓜的区别是啥吗? 窝瓜和倭瓜是一种东西吗? 经常吃韭菜有什么危害 像素标定板 新小区供热在没有移交供暖公司情况下,没有任何通知.供热稽查人员要求罚款1000才可以缴费供暖 如何修改 Linux 内核配置 求各位懂的过来帮我解答一下!住房里的电表如何认!????还有电表里最后那一位红色的数字是啥意思?? 稽核专员的主要的工作职责是什么? 稽核岗位职责的岗位介绍 供暖稽查怎样查偷暖行为 沈阳供暖想要报停需要什么手续 如何搞好供暖稽查工作 长春燃气稽查科的岗位职责是什么? 稽查部门的职能是什么? 热力公司督查是干什么 稽查一般是什么岗位? 供热公司稽查罚款有交的吗? 小米手机自动发短信是怎么回事? 请教!手机会自动发这个短信,是什么软件造成的,怎么关掉啊? 有没有可以自动向附近手机号码发送信息的软件 有没有可以设置手机某个时间自动给人发短信的软件。 求一个能给手机无限发短信的软件 手机自动发短信的软件。 手机总收到自动短信是用什么发的?用什么软件? 晚上偷开4天暖气,被查到了。后果严重吗?一般怎样处理?先谢谢了。 楼内有人用泵供热不热供热不管该怎么办能投诉吗 RedHatLinux修改内核参数,不是很懂,求指点,谢谢 晚上偷开4天暖气,被查到了。后果严重吗?一般会怎样处理? 如何修改linux系统内核参数msgmni 如何在Linux上通过GRUB添加内核参数 投诉供热服务问题应怎样回答 怎么修改linux 内核主频 csdn 供暖人员有权利进去个人家里吗? 供暖稽查开罚单说我家私自放水,但是我家真没放水,打电话问硬说肯定放水了,这种情况怎么办? 暖气报停需要什么手续 汽车站稽查是做什么的 Linux系统优化的12个步骤是什么? Linux内核引导参数简介 怎么解决 64G内存在linux/etc/sysctl.conf里怎样设置内核参数的相关推荐_百度知 ... 修改redhat内核参数? 如何修改新内核linux下的grub配置 linux 内核 配置串口 wps画表格怎么画 WPS文字中怎么绘制表格 如下图 把剩下的绘制好