MySQL数据库服务器逐渐变慢分析与解决方法分享

所属分类: 数据库 / Mysql 阅读数: 821
收藏 0 赞 0 分享
一、检查系统的状态

  通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外,还应观注那些占用系统资源(cpu、内存)的进程。

  1.使用sar来检查操作系统是否存在IO问题

  #sar-u210— 即每隔2秒检察一次,共执行20次。

  结果示例:

  注:在redhat下,%system就是所谓的%wio。

  Linux2.4.21-20.ELsmp (YY075)05/19/2005

  10:36:07AMCPU%user%nice%system%idle

  10:36:09AMall0.000.000.1399.87

  10:36:11AMall0.000.000.00100.00

  10:36:13AMall0.250.000.2599.49

  10:36:15AMall0.130.000.1399.75

  10:36:17AMall0.000.000.00100.00

  其中:

  %usr指的是用户进程使用的cpu资源的百分比;

  %sys指的是系统资源使用cpu资源的百分比;

  %wio指的是等待io完成的百分比,这是值得观注的一项;

  %idle即空闲的百分比。

  如果wio列的值很大,如在35%以上,说明系统的IO存在瓶颈,CPU花费了很大的时间去等待I/O的完成。Idle很小说明系统CPU很忙。像以上的示例,可以看到wio平均值为11,说明I/O没什么特别的问题,而idle值为零,说明cpu已经满负荷运行了。

  2.使用vmstat监控内存 cpu资源

  [root@mysql1 ~]# vmstat

  procs ———–memory———-—swap– —–io—-–system– —–cpu——

  r b swpd free buff cache si so bi bo in cs us sy id wa st

  0 0 72 25428 54712672264 0 0 14 43 53 59 1 198 0 0

  vmstat 的输出那些信息值得关注?

  io bo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常

  ① CPU问题

  下面几列需要被察看,以确定cpu是否有问题

  Processesinthe run queue (procs r)

  Usertime (cpu us)

  System time (cpu sy)

  Idle time (cpu id)

  问题情况:

  如果processes in run queue (procs r)的数量远大于系统中cpu的数量,将会使系统便慢。

  如果这个数量是cpu的4倍的话,说明系统正面临cpu能力短缺,这将使系统运行速度大幅度降低

  如果cpu的idle时间经常为0的话,或者系统占用时间(cpu sy)是用户占用时间(cpu us)两辈的话,系统面临缺少cpu资源

  解决方案 :

  解决这些情况,涉及到调整应用程序,使其能更有效的使用cpu,同时增加cpu的能力或数量

  ②内存问题

  主要查看页导入的数值(swap中的si),如果该值比较大就要考虑内存,大概方法如下:

  最简单的,加大RAM

  减少RAM的需求

  3.磁盘IO问题

  处理方式:做raid10提高性能

  4.网络问题

  telnet一下MySQL对外开放的端口,如果不通的话,看看防火墙是否正确设置了。另外,看看MySQL是不是开启了skip-networking的选项,如果开启请关闭。
更多精彩内容其他人还在看

Mac 将mysql路径加入环境变量的方法

这篇文章主要介绍了Mac如何将mysql路径加入环境变量,有需要的朋友好按照下面的步骤操作即可
收藏 0 赞 0 分享

mysql 增加修改字段类型及删除字段类型

本节主要介绍了mysql如何增加修改字段类型及删除字段类型,需要的朋友可以参考下
收藏 0 赞 0 分享

Mysql主从复制(master-slave)实际操作案例

这篇文章主要介绍了Mysql主从复制(master-slave)实际操作案例,同时介绍了Mysql grant 用户授权的相关内容,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL异常处理浅析

这篇文章主要介绍了MySQL的异常处理,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL存储毫秒数据的方法

MySQL中没有可以直接存储毫秒数据的数据类型,但是不过MySQL却能识别时间中的毫秒部分。这篇文章主要介绍了MySQL存储毫秒数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

MySql中使用INSERT INTO语句更新多条数据的例子

这篇文章主要介绍了MySql中使用INSERT INTO语句更新多条数据的例子,MySQL的特有语法,需要的朋友可以参考下
收藏 0 赞 0 分享

Windows下MySql错误代码1045的解决方法

这篇文章主要介绍了Windows下MySql错误代码1045的解决方法,文中还包含了2个Linux下的解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

这篇文章主要介绍了mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句,一般在一些统计报表中比较常用这个时间段,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql的中文数据按拼音排序的2个方法

这篇文章主要介绍了mysql的中文数据按拼音排序的2个方法,用于一些特殊环境,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL定期分析检查与优化表的方法小结

听DBA的人说,相比oracle,MySQL就是一个玩具级别的数据库,在网易门户中,DBA基本很少去管理到MySQL的东西,所以我们产品使用到的MySQL的一些配置和优化还是需要我们开发人员自己动手,下面就简单介绍一下实用的定期优化方法
收藏 0 赞 0 分享
查看更多