sysctl命令被用于在动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。
它包含一些TCP/IP堆栈和虚拟内存系统的高级选项, 用sysctl可以读取设置超过五百个系统变量。
sysctl变量的设置,通常是字符串,数字或者布尔型(布尔型用1来表示Yes',用0来标识'No')
这里把常用的系统变量, 列队整理为脚本,便于使用.
#!bin/bash
#作者:liusingbon
#功能:优化内核参数,适用RHEL7
cat >> /usr/lib/sysctl.d/00-system.conf <<EOF
fs.file-max=65535
#最大并发访问量
net.ipv4.tcp_timestamps = 0
#禁用时间戳
net.ipv4.tcp_synack_retries = 5
#对于远端的连接请求SYN,内核会发送SYN+ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手.这里决定内核在放弃连接之前所送出的 SYN+ACK 数目.
net.ipv4.tcp_syn_retries = 5
#表示本机向外发起TCP SYN连接超时重传的次数,不应该高于255;该值仅仅针对外出的连接,对于进来的连接由tcp_retries1控制.
net.ipv4.tcp_tw_recycle = 1
#打开快速 TIME-WAIT sockets 回收。这里的 1示意启用.
net.ipv4.tcp_tw_reuse = 1
#表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接. 1示意启用
net.ipv4.tcp_fin_timeout = 30
#本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60 秒。
net.ipv4.ip_local_port_range = 1024 65535
#本地发起连接时使用的端口范围,tcp初始化时会修改此值
kernel.shmall = 2097152
#系统上可以使用的共享内存的总量(单位:字节)
kernel.shmmax = 2147483648
#系统所允许的最大共享内存段的大小(单位:字节)
kernel.shmmni = 4096
#整个系统共享内存段的最大数量
kernel.sem = 5010 641280 5010 128
#该文件包含4个值:
#1.同一类信号的最多数量(semmsl)
#2.系统中信号的最多数目=semmni*semmsl (semmns)
#3.每个semop系统调用所包含的最大的操作数(能调用的信号量的最多次数) (semopm)
#4.系统中信号类型的数目的最大值,一个信号量标识符代表一个类型(semmni)
net.core.wmem_default=262144
#设置发送的socket缺省缓存大小(字节)
net.core.wmem_max=262144
#设置发送的socket最大缓存大小(字节)
net.core.rmem_default=4194304
#设置接收socket的缺省缓存大小(字节)
net.core.rmem_max=4194304
#设置接收socket的最大缓存大小(字节)
net.ipv4.tcp_window_scaling = 0
#表示设置tcp/ip会话的滑动窗口大小是否可变,0示意禁用
net.ipv4.tcp_sack = 0
#表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能,这样可以让发送者只发送丢失的报文段;
#对于广域网通信来说,这个选项应该启用,但是这会增加对 CPU 的占用.
#net.ipv4.tcp_keepalive_time = 1200
#表示从最后一个包结束后多少秒内没有活动,才发送keepalive包保持连接,默认7200s,理想可设为1800s,即如果非正常断开,1800s后可通过keepalive知道.这里使用#注释掉.
EOF
sysctl –p