CentOS系统参数优化-提升MySQL服务器性能

相信大多数MySQL数据库都会部署在Linux系统之中,尤其是生产数据库,我所用到的MySQL数据库都是部署在CentO64位操作系统上的,对操作系统默认参数的一些修改配置,可以让数据库的性能得到进一步的提升。我们最好不要把数据库装好之后马上就运行使用,而是应该将数据库的操作系统,以及数据库本身的一些参数配置好后再使用。
1.网络参数配置

网络参数配置需要修改配置文件/etc/sysctl.conf,可以在配置文件后面添加一下内容:

net.core.somaxconn=65536           #每个监听端口允许的最大的监听队列长度,这个值应该适当增大。
net.core.netdev_max_backlog=65536  #当网络端口接收数据包的速率比内核处理数据速度快时,允许发送到对列中的最大包数
net.ipv4.tcp_max_syn_backlog=65536 #还未获得链接的请求可保持在队列中的数量,当超过这个数目是,链接请求就可能被抛弃

net.ipv4.tcp_fin_timeout=10 #tcp链接等待时间,调整这个参数目的是为了加快TCP链接回收的速度
net.ipv4.tcp_tw_reuse=1     #加快TCP链接回收的速度
net.ipv4.tcp_tw_recycle=1   #加快TCP链接回收的速度

以下四个参数设置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=100 #代表TCP发送keepalive探测消息的时间间隔
net.ipv4.tcp_keepalive_intvl=10 #代表当TCp发送keepalive探测消息未获得确认是重发探测消息的时间间隔
net.ipv4.tcp_keepalive_probes=3 #代表TCP链接失效之前,最多发送多少keepalive探测消息

2.内存相关参数

内存的相关参数同样修改/etc/sysctl.conf文件

kernel.shmmax=2147483648 #用于定义单个共享内存段的最大值,这个参数应该设置的足够大,以便共享内存段能容纳下整个InnoDB缓冲池的大小。建议设置成物理内存的一半。
vm.swappiness=0          #表示除非虚拟内存使用完了,否则不要是要swap分区。

输入下面的命令,让内核参数生效:#sysctl -p

3.特定资源限制的配置

这个配置需要修改配置文件/etc/security/limits.conf,主要的就是对打开文件数量的配置,在MySQL的InnoDB存储引擎中,每一张表就对应着2-3个文件,对于允许打开文件的数量适当的增大,可以是MySQL的数据库性能更好。 打开文件数的配置

* soft nofile 65535
* hard nofile 65535

/etc/security/limits.d/90-nproc.conf 

* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock -1
* hard memlock -1

* 表示对所有用户生效
soft 代表是当前系统生效的设置
hard 代表系统中所能设定的最大值
nofile 表示所限制的资源是打开文件的数量

4.修改磁盘调度策略

一般默认情况下,CentOS系统的磁盘调度策略是完全公平队列模式(cfq),这种调度策略对于数据库服务器来说不太适合,而应该使用deadline调度策略。通过以下命令可以修改调度策略:

echo"deadline" > /sys/block/sda/queue/scheduler

也可以用以下命令查看磁盘调度策略:

more/sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

备注:括号里括起来的即为当前调度算法值 。对于虚拟机上面的磁盘,建议采用比较简单的noop,毕竟数据实际上怎么落盘取决于虚拟化那一层。Anticipatory适合于写入较多的环境,比如文件服务器;适合大文件处理,适合web server等。AS对数据库环境表现很差

5.文件系统进行性能调优

在/etc/fstab 中进行设置

data参数,data=wtiteback  | ordered | journal 这三个参数代表不同的日志策略

/dev/sda1/ext4   noatime,nodiratime,data = writeback 1 1
在这里可以看到使用了ext4这个文件系统,并且启用了 notime nodiratime这个选项,这是一种常用的文件配置方式。其中writeback 意味着只有原数据写入日志,原数据写入和数据写入并不是同步的,这是最快的一种配置,因为Innodb有自己的事务日志, 所以选择Innodb是最好的选择
ordered选项只会记录原数据,但提供了一些一致性的保证,在写原数据之前的会先写数据,使他们保持一致,这个选项比writeback 慢一些,但是如果出现崩溃呢更加安全。
journal提供了原子日志的一种行为,在数据写入到最终位置之前,将记录到日志中,这个选项对Innodb来说是没有必要的,在这三个选项中最慢的一个,noatime,nodiratime,用于禁止记录文件的访问时间和读取目录的时间,禁用了这两个时间的选项后,可以减少一些,写的操作。系统在读取文件和目录时候,不必写操作来记录以上两个时间

 

以上就是一些比较重要的配置MySQL数据库服务器系统参数的调整,调整这些系统参数后,会使MySQL服务器的性能更好,但这并不是全部的系统参数调整。可以参看Linux系统参数调优的相关数据了解更多系统参数调优。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值