sysctl命令用于运行时配置内核参数
编辑命令
vi /etc/sysctl.conf
保存刷新命令
/sbin/sysctl -p /etc/sysctl.conf
/sbin/sysctl -w net.ipv4.route.flush=1
#该值越高则linux越倾向于将部分长期没有用到的页swap,即便有足够空余物理内存(1~100)
vm.swappiness = 0
#决定检查一次相邻层记录的有效性的周期. 当相邻层记录失效时,将在给它发送数据前,再解析一次.(单位 秒)
net.ipv4.neigh.default.gc_stale_time=120
#1:通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项。0:不通过反向路径回溯进行源地址验证。
net.ipv4.conf.all.rp_filter=0
#1:通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项。0:不通过反向路径回溯进行源地址验证。
net.ipv4.conf.default.rp_filter=0
#对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
net.ipv4.conf.default.arp_announce = 2
#对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
net.ipv4.conf.all.arp_announce=2
#系统在同时所处理的最大timewait sockets 数目。如果超过此数的话,time-wait socket 会被立即砍除并且显示警告信息。
net.ipv4.tcp_max_tw_buckets = 6000
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN×××,默认为0,表示关闭 1:打开
net.ipv4.tcp_syncookies = 1
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 8192
#对于远端的连接请求SYN,内核会发送SYN + ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手.这里决定内核在放弃连接之前所送出的 SYN+ACK 数目.
net.ipv4.tcp_synack_retries = 1
#是否禁用ipv6(0:不禁用1:禁用)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.conf.lo.arp_announce=2
#设置core文件保存位置或文件名,只有文件名时,则保存在应用程序运行的目录下
kernel.core_pattern=/tmp/core-%e-%p-%t-%s
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。可以配32768
net.core.netdev_max_backlog = 8192
#设置接收socket的缺省缓存大小(字节)
net.core.rmem_default = 5242880
#设置接收socket的最大缓存大小(字节)
net.core.rmem_max = 8388608
#设置发送的socket缺省缓存大小(字节)
net.core.wmem_default = 5242880
#设置发送的socket最大缓存大小(字节)
net.core.wmem_max = 8388608
#表示每个socket所允许的最大缓冲区的大小(字节)
net.core.optmem_max = 81920
定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。
net.core.somaxconn = 8192
#该文件保存了三个值,分别是
#low:低于此值,TCP没有内存压力不会考虑释放内存。
#presure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态,在此值下,进入内存压力阶段。
#high:允许所有tcp sockets用于排队缓冲数据报的页面量,高于此值,TCP拒绝分配socket。
net.ipv4.tcp_mem = 786432 1048576 1572864
#TCP读buffer 可参考的优化值: 32768 436600 873200
net.ipv4.tcp_rmem = 8760 5242880 8388608
net.ipv4.tcp_wmem = 8760 5242880 8388608
#该文件指定的值为非零,则激活键盘上的sysrq按键。这个按键用于给内核传递信息,用于紧急情况下重启系统。当遇到死机或者没有响应的时候,甚至连 tty 都进不去,可以尝试用 SysRq 重启计算机。
kernel.sysrq = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1
#打开快速 TIME-WAIT sockets 回收。除非得到技术专家的建议或要求,请不要随意修改这个值。
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
#本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60 秒。过去在2.2版本的内核中是 180 秒。您可以设置该值,但需要注意,如果您的机器为负载很重的web服务器,您可能要冒内存被大量无效数据报填满的风险,FIN-WAIT-2 sockets 的危险性低于 FIN-WAIT-1,因为它们最多只吃 1.5K 的内存,但是它们存在时间更长。
#修改系統默认的 TIMEOUT 时间。
net.ipv4.tcp_fin_timeout = 15
#表示本机向外发起TCP SYN连接超时重传的次数,不应该高于255;该值仅仅针对外出的连接,对于进来的连接由tcp_retries1控制。在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_syn_retries = 1
#表示从最后一个包结束后多少秒内没有活动,才发送keepalive包保持连接,默认7200s,理想可设为1800s,即如果非正常断开,1800s后可通过keepalive知道。
net.ipv4.tcp_keepalive_time = 1200
#探测消息未获得响应时,重发该消息的间隔时间(秒)。默认值为75秒。 (对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)
net.ipv4.tcp_keepalive_intvl = 30
#TCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。该文件表示丢弃TCP连接前,进行最大TCP保持连接侦测的次数。保持连接仅在SO_KEEPALIVE套接字选项被打开时才被发送。
net.ipv4.tcp_keepalive_probes = 3
#表示设置tcp/ip会话的滑动窗口大小是否可变。0:不可变1:可变
net.ipv4.tcp_window_scaling = 1
#系统中所有进程能够同时打开的文件句柄数量
#fs.file-max = 1609708
#表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。(0:不启用,1:启用)
net.ipv4.tcp_sack = 1
#表示是否打开FACK拥塞避免和快速重传功能。0:禁止 1:打开
net.ipv4.tcp_fack = 1
#表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。0:不启用 1:启用
net.ipv4.tcp_timestamps = 0
#本地发起连接时使用的端口范围,tcp初始化时会修改此值
net.ipv4.ip_local_port_range = 10000 65000
下面是我的优化配置
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.conf.lo.arp_announce=2
kernel.core_pattern=/tmp/core-%e-%p-%t-%s
net.core.netdev_max_backlog = 8192
net.core.rmem_default = 5242880
net.core.rmem_max = 8388608
net.core.wmem_default = 5242880
net.core.wmem_max = 8388608
net.core.optmem_max = 81920
net.core.somaxconn = 8192
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.tcp_rmem = 8760 5242880 8388608
net.ipv4.tcp_wmem = 8760 5242880 8388608
kernel.sysrq = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_window_scaling = 1
#fs.file-max = 1609708
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.ip_local_port_range = 10000 65000