DB服务器中的参数优化
2016-11-27 23:15
211 查看
1、swappiness
禁止系统使用swap空间,配置/etc/sysctl.conf中的vm.swappiness=0
2、Scheduler调度
Scheduler调度,指的是磁盘的IO调度算法,下面聊一聊linux的几种IO调度算法
查看当前系统磁盘的sda的IO调度算法。
cat /sys/block/sda/queue/scheduler
其中:
noop(No Operation,电梯式调度算法):通过一个简单的FIFO(先进先出)队列将请求按先来先处理的顺序处理,但对于相邻的IO请求,noop算法会进行合并再处理。在机械硬盘读取需求需要磁头在磁道上不断地来回摆动来完成读取,而noop算法则是写优先的调度算法,所以读的性能表现不佳。但SSD磁盘不同于传统的机械硬盘,靠磁头在高速旋转的磁盘上运动来读取数据,ssd通过LBA(Logical Block Address,逻辑地址块)来访问数据,性能远远高于机械硬盘
cfq(Completely Fair Queuing,完全公平队列):在linux kernel 2.6.18内核之后的2.6系列内核中,cfq是默认的IO调度算法,它为每一个进程创建一个队列来处理这个进程所有的IO请求,然后再分配CPU时间来处理这些队列,这种做法可以确保每个进程都能很好地获得IO带宽。CPU处理时间片和IO请求队列的数量都是可以通过IO优先级来控制的。
deadline:最后期限调度算法。在RedHat 7系统开始,Deadline调度算法成为默认的磁盘调度算法,它为了保证每个IO请求都能在deadline(最后期限)之前得到处理以避免出现IO饿死的情况。deadline调度算法为读和写分别创建了一个deadline队列,默认情况下读操作的deadline时间是500ms,写操作的deadline时间是5s,并且读队列被赋予较高的优先级,因为进程通常会阻止读操作。在每个IO请求完成之后,下一次IO操作之前,deadline算法会判断两个deadline队列中是否有即将到期的请求,这些请求会被优先处理,确保该IO请求不被饿死
anticipatory:预测IO调度算法。在Linux Kernel2.6.0至2.6.18版本中,anticipatory是默认的磁盘调度算法,但在linux kerne 2.6.33之后不再用这种调度算法。他的原理是在每次完成IO请求,开始新的IO操作之前设置了6ms等待,如果在6ms之内收到读IO的请求,anticipatory调度算法就可以立即满足这个要求
针对DB服务器,应如何调整磁盘调度算法呢?
1)DB服务器上配置了SSD硬盘,那么这种场景下,NOOP算法是最优的,因为它读写数据不涉及磁盘转动,磁头定位。配置方法如下:
echo "Noop" >/sys/block/sda/queue/scheduler
2)DB服务器上配置的就是普通的SAS盘,这种场景下,Deadline是最优的,这也是Mysql标准调优中常用的调优参数。配置方法如下。
echo "deadline" >/sys/block/sda/queue/scheduler
禁止系统使用swap空间,配置/etc/sysctl.conf中的vm.swappiness=0
2、Scheduler调度
Scheduler调度,指的是磁盘的IO调度算法,下面聊一聊linux的几种IO调度算法
查看当前系统磁盘的sda的IO调度算法。
cat /sys/block/sda/queue/scheduler
其中:
noop(No Operation,电梯式调度算法):通过一个简单的FIFO(先进先出)队列将请求按先来先处理的顺序处理,但对于相邻的IO请求,noop算法会进行合并再处理。在机械硬盘读取需求需要磁头在磁道上不断地来回摆动来完成读取,而noop算法则是写优先的调度算法,所以读的性能表现不佳。但SSD磁盘不同于传统的机械硬盘,靠磁头在高速旋转的磁盘上运动来读取数据,ssd通过LBA(Logical Block Address,逻辑地址块)来访问数据,性能远远高于机械硬盘
cfq(Completely Fair Queuing,完全公平队列):在linux kernel 2.6.18内核之后的2.6系列内核中,cfq是默认的IO调度算法,它为每一个进程创建一个队列来处理这个进程所有的IO请求,然后再分配CPU时间来处理这些队列,这种做法可以确保每个进程都能很好地获得IO带宽。CPU处理时间片和IO请求队列的数量都是可以通过IO优先级来控制的。
deadline:最后期限调度算法。在RedHat 7系统开始,Deadline调度算法成为默认的磁盘调度算法,它为了保证每个IO请求都能在deadline(最后期限)之前得到处理以避免出现IO饿死的情况。deadline调度算法为读和写分别创建了一个deadline队列,默认情况下读操作的deadline时间是500ms,写操作的deadline时间是5s,并且读队列被赋予较高的优先级,因为进程通常会阻止读操作。在每个IO请求完成之后,下一次IO操作之前,deadline算法会判断两个deadline队列中是否有即将到期的请求,这些请求会被优先处理,确保该IO请求不被饿死
anticipatory:预测IO调度算法。在Linux Kernel2.6.0至2.6.18版本中,anticipatory是默认的磁盘调度算法,但在linux kerne 2.6.33之后不再用这种调度算法。他的原理是在每次完成IO请求,开始新的IO操作之前设置了6ms等待,如果在6ms之内收到读IO的请求,anticipatory调度算法就可以立即满足这个要求
针对DB服务器,应如何调整磁盘调度算法呢?
1)DB服务器上配置了SSD硬盘,那么这种场景下,NOOP算法是最优的,因为它读写数据不涉及磁盘转动,磁头定位。配置方法如下:
echo "Noop" >/sys/block/sda/queue/scheduler
2)DB服务器上配置的就是普通的SAS盘,这种场景下,Deadline是最优的,这也是Mysql标准调优中常用的调优参数。配置方法如下。
echo "deadline" >/sys/block/sda/queue/scheduler
相关文章推荐
- MySQL优化全攻略-服务器参数调整
- 优化weblogic服务器参数
- 优化Linux的内核参数来提高服务器并发处理能力
- Liferay 前端性能调优(2) Liferay服务器上开启优化参数
- 优化Linux的内核参数来提高服务器并发处理能力
- 优化 WebLogic 服务器性能参数
- MySQL服务器参数配置优化
- 优化Linux下的内核TCP参数来提高服务器负载能力
- 优化Linux 的内核参数来提高服务器并发处理能力
- 手机在线更新系统MySQL数据库服务器参数优化mycnf,16G内存8核CPU,
- linux内核优化参数web服务器
- 优化Linux的内核参数来提高服务器并发处理能力
- 优化Linux的内核参数来提高服务器并发处理能力
- 优化Linux的内核参数来提高服务器并发处理能力
- 优化Linux的内核参数来提高服务器并发处理能力
- 【转】优化WebLogic 服务器性能参数
- 优化Linux的内核参数来提高服务器并发处理能力
- 关于上个Flex-Jsp-DB例子中Flex和Jsp传递中文参数问题的解决方法!(Tomcat服务器)
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力
- mysql数据库性能优化的关键参数及mysql服务器优化