liunx系统内核参数优化

liunx内核参数优化主要按应用场景来优化。目前公司生产如下配置,参考各网络大神的配置及解释仅供参考

 

net.ipv4.tcp_fin_timeout = 5
#表示如果套接字由本端要求关闭,这个参数决定了它保持在 FIN-WAIT-2状态的时间
net.ipv4.tcp_tw_reuse = 1
#开启重用,允许将TIME_WAIT socket用于新的TCP连接。默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1
#开启TCP连接中TIME_WAIT socket的快速回收。默认值为0,表示关闭。
net.ipv4.tcp_syncookies = 1
#开启SYN cookie,出现SYN等待队列溢出时启用cookie处理,防范少量的SYN攻击。默认为0,表示关闭。
#tcp 建立连接的 3 路握手过程中,当服务端收到最初的 SYN 请求时,会检查应用程序的syn_backlog队列是否已满;
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 5
#TCP发送keepalive探测以确定该连接已经断开的次数。根据情形也可以适当地缩短此值。
net.ipv4.tcp_keepalive_intvl = 15
#如果某个TCP连接在空闲30秒后,内核才发起 探查(probe);
#如果探查(probe)5次(每次5秒 tcp_keepalive_intvl值)不成功,内核才彻底放弃,认为该连接已失效;
#探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值。
net.ipv4.ip_local_port_range = 1024 65000
#指定外部连接的端口范围。默认值为32768 61000。
net.ipv4.tcp_max_syn_backlog = 262144
#表示SYN队列的长度,预设为1024,这里设置队列长度为262 144,可以容纳更多等待连接的网络连接数
net.ipv4.tcp_max_tw_buckets =5000
#系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值将立刻被清楚并输出警告信息。默认值为180000。对于squid来说效果不是很大,但可以控制TIME_WAIT套接字最大值,避免squid服务器被拖死。
#系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息;
#默认为180000,设为较小数值此项参数可以控制TIME_WAIT套接字的最大数量,避免服务器被大量的TIME_WAIT套接字拖死;
net.ipv4.tcp_syn_retries = 2
#表示在内核放弃建立连接之前发送SYN包的数量。
#对于一个新建连接,内核要发送多少个SYN 连接请求才决定放弃;
net.ipv4.tcp_synack_retries = 3
#设置内核放弃连接之前发送SYN+ACK包的数量。
#tcp_synack_retries显示或设定Linux在回应SYN要求时尝试多少次重新发送初始SYN,ACK封包后才决定放弃;
net.core.somaxconn = 16384
#定义了系统中每一个端口最大的监听队列的长度, 对于一个经常处理新连接的高负载 web服务环境来说,默认值为128,偏小。
net.core.netdev_max_backlog = 16384
#表示当在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数量。
net.ipv4.tcp_max_orphans = 16384
#表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。
#系统所能处理不属于任何进程的TCP sockets最大数量;
net.ipv4.tcp_tw_reuse = 1
#表示开启重用,允许将TIME-WAITsockets重新用于新的TCP连接;
net.ipv4.tcp_mem = 178368 237824 356736
net.ipv4.tcp_mem[0]:
#低于此值,TCP没有内存压力;
net.ipv4.tcp_mem[1]:
#在此值下,进入内存压力阶段;
net.ipv4.tcp_mem[2]:
#高于此值,TCP拒绝分配socket;
net.ipv4.ip_local_port_range = 1024 65000
#表示用于向外连接的端口范围
net.ipv4.tcp_retries1 = 5
#放弃回应一个TCP 连接请求前﹐需要进行N次重试;
net.ipv4.tcp_retries2 = 15
#在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行N次重试;
net.ipv4.tcp_syncookies = 1
#开启SYN洪水攻击保护。
#tcp 建立连接的 3 路握手过程中,当服务端收到最初的 SYN 请求时,会检查应用程序的syn_backlog队列是否已满;
#启用syncookie,可以解决超高并发时的` can’t connect` 问题。
#但是会导致 TIME_WAIT 状态fallback为保持2MSL时间,高峰期时会导致客户端无可复用连接而无法连接服务器;
net.ipv4.tcp_orphan_retries = 0
#关闭TCP连接之前重试多少次;
net.ipv4.ip_conntrack_max = 655360
#在内核内存中netfilter可以同时处理的“任务”(连接跟踪条目);
net.ipv4.icmp_ignore_bogus_error_responses = 1
#开启恶意icmp错误消息保护;
net.ipv4.tcp_timestamps = 1
#该参数控制RFC 1323 时间戳与窗口缩放选项;
net.ipv4.tcp_sack = 1
#选择性应答(SACK)是 TCP的一项可选特性,可以提高某些网络中所有可用带宽的使用效率;
net.ipv4.tcp_fack = 1
#打开FACK(Forward ACK) 拥塞避免和快速重传功能;
net.ipv4.tcp_retrans_collapse = 1
#打开重传重组包功能,为0的时候关闭重传重组包功能;

  

  

posted @ 2019-08-24 22:21  caonw  阅读(146)  评论(0)    收藏  举报