内核优化

Posted 巽逸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核优化相关的知识,希望对你有一定的参考价值。

net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
kernel.shmmax = 30923764531
kernel.shmall = 7549747
kernel.msgmax = 65535
kernel.msgmnb = 65535
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
kernel.sysrq = 0

 

net.ipv4.tcp_syn_retries = 1   ##建立 TCP 连接时 SYN 报文重试的次数

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

net.ipv4.tcp_keepalive_time = 600  ###当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。

net.ipv4.tcp_keepalive_probes = 3 ##TCP发送keepalive探测以确定该连接已经断开的次数。

net.ipv4.tcp_keepalive_intvl =15  ##探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)

net.ipv4.tcp_retries2 = 5 ##在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认值为15,根据RTO的值来决定,相当于13-30分钟(RFC1122规定,必须大于100秒).(这个值根据目前的网络设置,可以适当地改小。

net.ipv4.tcp_fin_timeout = 30  ##如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间

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

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

net.ipv4.tcp_tw_reuse = 1    ##开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。

net.ipv4.tcp_max_orphans = 32768  ##最大孤儿套接字(orphan sockets)数,单位是个

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

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

 

##tcp协议定义的每个socket链路接收窗口大小,单位字节,有三个值:min、default、max。

net.ipv4.tcp_wmem = 8192 131072 16777216   ##tcp协议定义的每个socket链路发送窗口大小。

net.ipv4.tcp_rmem = 32768 131072 16777216  ##tcp协议定义的每个socket链路接收窗口大小,单位字节,有三个值:min、default、max。

net.ipv4.tcp_mem = 786432 1048576 1572864   ##tcp协议栈所有链路内存占用的限制,单位pagesize(4K)。

net.ipv4.ip_local_port_range = 1024 65000    ##表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

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

net.ipv4.netfilter.ip_conntrack_max=65536

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180  ##已建立的tcp连接的超时时间,默认432000,也就是5天。

net.core.somaxconn = 16384   ##web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。对繁忙的服务器,增加该值有助于网络性能

net.core.netdev_max_backlog = 16384  ##网卡设备将请求放入队列的长度。

kernel.shmmax=30923764531  ##单个段允许使用的大小。这两个可以设置为内存的 90%。例如32G 32*1024*1024*1024*0.9就等于30923764531。
kernel.shmall=7549747     ##大小为30923764531/1024/4
kernel.msgmax=65535      ##修改消息队列长度
kernel.msgmnb=65535      ##修改消息队列长度
net.ipv4.tcp_sack = 1 ##使 用 Selective ACK﹐它可以用来查找特定的遗失的数据报--- 因此有助于快速恢复状态。
net.ipv4.tcp_window_scaling = 1 ##该 文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到 65535 字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力(RFC 1323)。(对普通地百M网络而言,关闭会降低开销,所以如果不是高速网络,可以考虑设置为0)。

   kernel.sysrq = 0  ##关闭sysrq功能

 

以上是关于内核优化的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉

从JVM的角度看JAVA代码--代码优化

LINUX PID 1和SYSTEMD PID 0 是内核的一部分,主要用于内进换页,内核初始化的最后一步就是启动 init 进程。这个进程是系统的第一个进程,PID 为 1,又叫超级进程(代码片段

我应该研究 PTX 来优化我的内核吗?如果是这样,怎么做?

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段