内核相关参数(/etc/sysctl.conf)
如下参数能够直接放到sysctl.conf文件的末尾:
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
加快TCP链接的回收:
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1linux
TCP链接接收和发送缓冲区大小的默认值和最大值:
net.core.wmem_default = 87380
net.core.wmem_max = 16777216
net.core.rmem_default = 87380
net.core.rmem_max = 16777216数据库
减小失效链接所占用的TCP资源的数量,加快资源回收的效率
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3服务器
kernel.shmmax = 4294967295
Linux内核参数中最重要的参数之一,用于定义单个共享内存段的最大值。
注意:
1. 这个参数应该设置的足够大,以便能在一个共享内存段下容纳整个的Innodb
缓冲池的大小
2. 这个值的大小对于64位linux系统,可取的最大值为物理内存值-1byte,建议
值为大于物理内存的一半,通常取值大于Innodb缓冲池的大小便可,能够取物理内存-1byteapp
vm.swappiness = 0
这个参数当内存不足时会对性能产生比较明显的影响。
Linux系统内存交换区:
在Linux系统安装时都会有一个特殊的磁盘分区,称之为系统交换分区。
使用free-m命令能够看到swap就是内存交换区.
做用:
当操做系统由于没有足够的内存时就会将一些虚拟内存写到磁盘的交换区中
这样就会发生内存交换。
在MySQL服务器上是否要使用交换分区有一些争议:
在MySQL服务所在的Linux系统上彻底禁用交换分区。
带来的风险:
1. 下降操做系统的性能
2. 容易形成内存溢出,崩溃,或都被操做系统kill掉
结论:
在MySQL服务器上保留交换区仍是很必要的,可是要控制什么时候使用交换分区。
Vm.swappiness = 0
就是告诉Linux内核除非虚拟内存彻底满了,不然不要使用交换区。tcp
增长资源限制(/etc/security/limit.conf)
这个文件其实是Linux PAM也就是插入式认证模块的配置文件。
打开文件数的限制:
soft nofile 65535
hard nofile 65535
* 表示对全部用户有效
soft 指的是当前系统生效的设置
hard 代表系统中所能设定的最大值
nofile 表示所限制的资源是打开文件的最大数目
65535 限制的数量
soft不能大于hard
直接加到limit.conf文件的末尾就能够了。
结论:把可打开的文件数量增长到65535个以保证能够打开足够多的文件句柄。
注意:这个文件的修改须要重启系统才能生效。oop
磁盘调度策略(/sys/block/devname/queue/scheduler)
cat /sys/block/devname/queue/scheduler
调度策略: noop anticipatory deadline [cfg]性能
noop(电梯式调度策略)
NOOP实现了一个FIFO队列,它像电梯的工做方法同样对I/O请求进行组织,当有一个新
的请求到来时,它将请求合并到最近的请求以后,以此来保证请求同一介质。NOOP倾向饿死读而
利于写,所以NOOP对于闪存设备、RAM及嵌入式系统是最好的选择。spa
deadline(截止时间调度策略)
deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限
短于写期限。这样就防止了写操做由于不能被读取而饿死的现象,deadline对数据库类应用是最
好的选择。操作系统
anticipatory(预料I/O调度策略)
本质上与deadline同样,但在最后一次读操做以后,要等待6ms,才能继续进行对其它I/O
请求进行调度。它会在每一个6ms中插入新的I/O操做,而会将一些小写入流合并成一个大写入流,用
写入延时换区最大的写入吞吐量。AS适合于写入较多的环境,好比文件服务器,AS对数据库环境表
现不好。.net
修改调度策略: echo <schedulername> > /sys/block/devname/queue/scheduler 如 echo deadline /sys/block/devname/queue/scheduler