一、设置开启慢查询mysql
Mysql5.0以上的版本能够支持将执行比较慢的SQL语句记录下来。 mysql> show variables like 'long%'; 注:这个long_query_time是用来定义慢于多少秒的才算“慢查询” +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec) mysql> set long_query_time=1; 注: 我设置了1, 也就是执行时间超过1秒的都算慢查询。 Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'slow%'; +---------------------+---------------+ | Variable_name | Value | +---------------------+---------------+ | slow_launch_time | 2 | | slow_query_log | ON | 注:是否打开日志记录 | slow_query_log_file | /tmp/slow.log | 注: 设置到什么位置 +---------------------+---------------+ 3 rows in set (0.00 sec) mysql> set global slow_query_log='ON' 注:打开日志记录 一旦slow_query_log变量被设置为ON,mysql会当即开始记录。 /etc/my.cnf 里面能够设置上面MYSQL全局变量的初始值。 long_query_time=1 slow_query_log_file=/tmp/slow.log
三、查看机器性能瓶颈;有多是 mysql 所在机器 磁盘 IO繁忙,致使 mysql很慢linux
最近一台linux服务器出现异常,系统反映很慢,相应的应用程序也没法反映,并且还出现死机的状况,通过几天的观察了解,发现服务器压力很大,主要的压力来自硬盘的IO访问已经达到100%ios
为了方便各位和本身从此遇到此类问题能尽快解决,我这里将查看linux服务器硬盘IO访问负荷的方法同你们一块儿分享:sql
首先 、用top命令查看服务器
top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14性能
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie测试
Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si日志
Mem: 4037872k total, 4003648k used, 34224k free, 5512k bufferscode
Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cachedserver
查看12.6% wa
IO等待所占用的CPU时间的百分比,高过30%时IO压力高
其次、 用iostat -x 1 10
若是 iostat 没有,要 yum install sysstat
avg-cpu: %user %nice %sys %iowait %idle
0.00 0.00 0.25 33.46 66.29
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
查看%util 100.10 %idle 66.29
若是 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70% IO压力就较大了,通常读取速度有较多的wait.
同时能够结合vmstat 查看查看b参数(等待资源的进程数)
vmstat -1
若是你想对硬盘作一个IO负荷的压力测试能够用以下命令
time dd if=/dev/zero bs=1M count=2048 of=direct_2G
此命令为在当前目录下新建一个2G的文件