Linux内核优化标准规范-全网最全最详细-add by yhz

mac2024-06-20  49

Linux内核优化标准规范

1、优化配置文件

配置文件位置:/etc/sysctl.conf

2、配置文件优化详解

TCP方面的优化

1、启用源路由核查功能,一般选择不开启,普通环境状态下选择关闭

net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

2、开启重用,允许将TIME_WAIT socket用于新的TCP连接。默认为0,表示关闭。一般选择开启,用于等待中的socket建立tcp连接

net.ipv4.tcp_tw_reuse = 1

3、开启TCP连接中TIME_WAIT socket的快速回收。默认值为0,表示关闭。回收tcp连接,避免系统堵塞

net.ipv4.tcp_tw_recycle = 0

4、如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些,经过实践12秒为比较合理的值,等待12秒

net.ipv4.tcp_fin_timeout = 12

5、keepalive打开的情况下,TCP发送keepalive消息的频率。(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,如果两边边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间是不是就是2小时,空连接攻击? tcp_keepalive_time就是预防此情形的.推荐设置为1200秒,或者根据需求设置成1800秒。

net.ipv4.tcp_keepalive_time = 1200

6、指定外部连接的端口范围。默认值为32768 61000。一般设置稍微大点,如果访问数,连接数比较多的话

net.ipv4.ip_local_port_range = 10000 65000

7、表示SYN队列的长度,预设为1024,一般设置大一点可以容纳更多的连接,以容纳更多的等待连接。

net.ipv4.tcp_max_syn_backlog = 8192

8、关闭ipv6的连接,减少系统负载,如果需要用到ipv6网络记得一定要打开

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1

9、决定检查过期多久邻居条目

net.ipv4.neigh.default.gc_stale_time=120

10、ARP调优,arp_ignore定义了对目标地址为本机IP的ARP询问的不同应答模式。始终使用与目标IP地址对应的最佳本地IP地址作为ARP请求的源IP地址。在此模式下将忽略IP数据包的源IP地址并尝试选择能与目标IP地址通信的本机地址。首要是选择所有网络接口中子网包含该目标IP地址的本机IP地址。如果没有合适的地址,将选择当前的网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送ARP请求,并把发送ARP请求的网络接口卡的IP地址设置为ARP请求的源IP。

net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.all.arp_announce=2

11、如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区, 可以通过修改 swappiness 的数值。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。避免swap的一种方式是设置swap空间为0。但是,swap会在系统崩溃时提供安全机制,或者会在out of memory的情况下阻止操作系统 kill 掉进程。由于这个原因,推荐 vm.swappiness参数设置为一个非常低的值:1 。这个参数表示 VM系统中的多少百分比用来作为swap空间。

vm.swappiness = 0

12、如果不是类似 Nginx 之类的中间代理(即不担心端口耗尽),你通常不用关心这个值,使用官方默认的就好,甚至官方建议在内存大的情况下可以增加这个值。类似 Nginx 之类的中间代理一定要关注这个值,因为它对你的系统起到一个保护的作用,一旦端口全部被占用,服务就异常了。 tcp_max_tw_buckets 能帮你降低这种情况的发生概率,争取补救时间。上面的tcp端口范围为55000,一般设置为以下值,不大于tcp建立连接的端口范围

net.ipv4.tcp_max_tw_buckets = 50000

13、是指定所能接受SYN同步包的最大客户端数量,即半连接上限;一般设置的大一点到1024.默认的是128

net.ipv4.tcp_max_syn_backlog = 1024

14、本端试图关闭TCP连接之前重试多少次。缺省值是7,相当于50秒~16分钟(取决于RTO)。如果你的机器是一个重载的WEB服务器,你应该考虑减低这个值,因为这样的套接字会消耗很多重要的资源,一般建议重连2次或者3次断开连接,这里设置为2

net.ipv4.tcp_synack_retries = 2

15、开启允许绑定非本机的IP,一般如果有vip的环境,如keepalived,需要开启

net.ipv4.ip_nonlocal_bind=1

16、file-max是设置 系统所有进程一共可以打开的文件数量 。对服务器来说,file-max, ulimit都需要设置,否则就可能出现文件描述符用尽的问题

fs.file-max = 6553560
最新回复(0)