下面列出了一些Centos7操作系统的配置参数,通过调整这些参数,可以让系统效率更高。
调整Centos7操作系统的配置参数
在etc目录下面,存在sysctl.conf文件,通过配置这个文件,可以调整系统的参数。
配置参数及解读
①.系统允许同时发起的TCP连接数。在许多的主流操作系统上这个值都默认是128。
net.core.somaxconn=65535
②.每个网络端口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog=65536
③.系统允许的半连接(SYN)同步包上限
net.ipv4.tcp_max_syn_backlog=65536
下面的文字内容是对该参数的说明:
打个简单的比方,某某发布公告要邀请四海之内若干客人到场参加酒席。客人参加酒席分为两个步骤:
1、到大厅;
2、找到座位(吃东西,比如糖果、饭菜、酒等)。
tcp_max_syn_backlog用于指定酒席现场面积允许容纳多少人进来;
somaxconn用于指定有多少个座位。
显然tcp_max_syn_backlog>=somaxconn。
如果要前来的客人数量超过tcp_max_syn_backlog,那么多出来的人虽然会跟主任见面握手,但是要在门外等候;
如果到大厅的客人数量大于somaxconn,那么多出来的客人就会没有位置坐(必须坐下才能吃东西),只能等待有人吃完有空位了才能吃东西。
什么是半连接: 未完成三次握手的连接就是半连接,已完成的叫做完全连接
三次握手:
1、第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
2、第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
④这个参数是用来设置保持在FIN_WAIT_2状态的时间。tcp4次挥手,正常的处理流程就是在FIN_WAIT_2情况下接收到FIN进入到TIME_WAIT的情况,tcp_fin_timeout参数对处于TIME_WAIT状态的时间没有任何影响。但是如果这个参数设的比较小,会缩短从FIN_WAIT_2到TIME_WAIT的时间,从而使连接更早地进入TIME_WAIT状态。状态开始的早,等待相同的时间,结束的也早,客观上也加速了TIME_WAIT状态套接字的清理速度。
net.ipv4.tcp_fin_timeout=10
⑤TIME-WAIT套接字是否允许重用于新的TCP连接,了解网络的情况建议开启=1,提高连接速度。不熟悉网络配置的情况下建议关闭=0。
net.ipv4.tcp_tw_reuse=0
⑥表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_tw_recycle=0
⑦发送与接收数据的缓存值
net.core.wmem_default=262144
net.core.wmem_max=524288
net.core.rmem_default=262144
net.core.rmem_max=524288
⑧长连接的心跳包机制,设置心跳包开始时机为,发送数据包后半小时开始心跳检查,
net.ipv4.tcp_keepalive_time=1800
⑨长连接的心跳包机制,心跳包发送间隔时间10秒
net.ipv4.tcp_keepalive_intvl=10
⑩长连接的心跳包机制,超过3次没有应答,则认为连接无效,将其丢弃。
net.ipv4.tcp_keepalive_probes=3
⑪Linux进程可以分配的单独共享内存的最大值,大于 INNODB_POOL_SIZE与QUERY_CACHE及其他MySQL占用内存总和。建议总内存的60%左右,2147483648 字节(B) = 2GB
kernel.shmmax=2147483648
⑫swappiness的值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60,0代表优先使用物理内存对数据进行处理。
vm.swappiness=0