为数据库调优Linux
为数据库调优Linux
yeahcheung 发表于3年前
为数据库调优Linux
  • 发表于 3年前
  • 阅读 9
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: Linux与Mysql是天生组合。通过调整Linux参数,可以把Mysql性能提高30-40%。

改变IO调度方式

#查看sda硬盘的IO调度方式
cat /sys/block/sda/queue/scheduler
noop deadline [cfq]

在大多数发行版本上,使用cfq作为IO的默认的调度方式。它可以很好的处理系统中的多个应用IO平衡问题。但是在数据库服务器上只有数据库在运行,所有让数据库占用所有IO资源。

IO调试方式比较:

cfq: 多应用IO资源平衡,运行比较慢。

noop: 适用于SSD、基于硬件的RAID。

更改IO调度方式

echo noop > /sys/block/sda/queue/scheduler
vi /etc/rc.local
# Add this line to your rc.local file because the
# I/O scheduler will revert to the default after a
# system reboot.
echo "noop" > /sys/block/sda/queue/scheduler

交换分区参数调整

交换通常意味着一个MySQL服务器的死亡。mysql处理内部缓存时希望缓冲池足够快。如果Linux把缓冲池放上硬盘上,mysql将会崩溃。

禁用交换

sysctl -w vm.swappiness=0
vi /etc/sysctl.conf
vm.swappiness=0

增加打开文件数

默认情况下每个进程允许打开1024个文件。

max_connections中每个连接消耗掉一个文件描述符。

每个数据表需要一个文件描述符,如果有10张表,100个连接的话至少需要1000个文件描述符,因为每个连接维护自己的文件句柄。

vi /etc/security/limits.conf
* soft nofile 999999
* hard nofile 999999

ulimit -n 999999

关闭文件系统的访问时间

大部分Linux发行版本中,文件系统会自己追踪文件的访问时间。然后访问时间基本上是不会有作用的,还会在每次文件被读取时浪费一次I/O,像Mysql读取一张表。

禁用访问时间:

vi /etc/fstab
#原有配置如下
/dev/sdb1 / ext4 errors=remount-ro 0 1
#修改为如下,noatime: 关闭文件访问时间 nodiratime:关闭文件夹访问时间
/dev/sdb1 / ext4 noatime,nodiratime,errors=remount-ro 0 1

选择最好的文件系统

ext4是大部分linux发行版本中默认的文件系统格式。与ext4比较,XFS在mysql基准测试时性能更佳。

安装XFS

yum -y install xfsprogs.x86_64
#格式化分区为xfs
mkfs.xfs /dev/sda1


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 18
码字总数 7150
×
yeahcheung
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: