1.内核相关参数(/etc/sysctl.conf)
参数说明:
#每个端口最大可以监听队列
net.core.somaxconn = 65535
#在每个网络接口接收数据报速率比内核处理速率快的时候,允许被发送到队列中的数据包的最大数目
net.core.netdev_max_backlog = 65535
#还没获得连接的请求,在队列中允许保存的最大数目
net.ipv4.tcp_max_syn_backlog = 65535
# tcp等待状态时的等待时间(对于连接比较频繁的系统,这个很重要。可以增加TCP的回收速度)
net.ipv4.tcp_fin_timeout = 10
# 下面两个参数也可以增加TCP的回收速度
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
# 下面四个参数决定了TCP接收和发送的缓冲区大小
net.core.wmem_defalut = 87380
net.core.wmem_max = 16777216
net.core.rmem_default = 87380
net.core.rmem_max = 16777216
# 下面三个参数减少了失效连接对系统资源的占据
# 用于判断连接是否有效
net.ipv4.tcp_keepalive_time = 120
# 没有接收到反应后,间隔一定时间进行重新发送
net.ipv4.tcp_keepalive_intvl = 30
# 在认定连接失效之前,发送多少个TCP的keepalive探测包
net.ipv4.tcp_keepalive_probes = 3
# 共享内存的最大值(这个参数应该设置的足够大,以便能在一个共享内存段下容纳整个的Innodb缓冲池的大小)
kernel.shmmax = 4294967295
#在MySQL服务器上是否要使用交换分区有一些争议:
在MySQL服务所在的Linux系统上完全禁用交换分区
=> 带来的风险:
1. 降低操作系统的性能
2. 容易造成内存溢出,崩溃,或都被操作系统Kill掉
所以,使用交换分区还是有必要的,只要我们可以控制何时使用交换分区
vm.swappiness = 0
就是告诉Linux内核除非虚拟内存完全满了,否者不要使用交换区
2.增加资源限制(/etc/security/limit.conf)
limit.conf 这个文件实际上Linx PAM也就是插入式认证模块的配置文件
* soft nofile 65535
* hard nofile 65535
* 表示对所有用户有效
soft 指的时当前系统生效的设置
hard 表明系统所能设定的最大值
nofile 表示所限制的资源时打开文件的最大数目
65535 就是限制的数量
注意:这个文件的修改需要重启系统才可以生效
3.磁盘调度策略(/sys/block/devname/queue/scheduler)
Linux系统默认采用cfq策略,既是完全公平队列策略。而对数据库类应用最好的选择应该时Deadline