mysql查看io情况_pt-ioprofile分析查看mysql的真实IO情况
针对IO密集型应用做系统调优的时候,我们通常都需要知道系统cpu 内存 io 网络等系统性能 和 使用率,结合应用本身的访问量,以及 mysql的性能指标来综合分析。比如说:我们将系统压力情况分为三个阶段:从用户端开始到web server,再到mysql。
1. 客户量:我们可以从web app的访问log,查看访问量(通常会记录时间),
2. 系统指标: 对比dstat、 iostat/ mpstat pidstat 等搜集对应的系统性能指标,
3. mysql: 使用mysql status ,或者 mycheckpoint等工具搜集mysql的cache , query等数据。
但是问题来了,我们很容易搜集到了系统层、设备层的IO数据,但是缺少一个体贴的工具来告诉你应用打开了多少文件,文件读写比例,执行了多少次fsync,是随机读写还是顺序读写,另外,mysql是一个庞大而精心设计的系统,使用了一些列的方案如table cache, thread cache 等来提升IO,我们比较容易获得他的缓存量,命中率,文件数,但是却不好直观的知道它到底对物理IO设备读写了多少数据。
ioprofile就是这样一个工具,提供了直观的量化的数据来描述进程对io设备的真实读写量。
由于实现方式是使用strace注入到线程中,所以运行时需要sudo,方法如下:
sudo ./pt-ioprofile -p 8534 -c count
sudo ./pt-ioprofile -p 8534 -c sizes
2015年 04月 23日 星期四 17:55:35CST
Tracing process ID8534total read pwrite fsync open close filename613878 613878 0 0 0 0 /redmine/mysql/data/mycheckpoint/sv_diff.frm406924 406924 0 0 0 0 /redmine/mysql/data/mycheckpoint/sv_sample.frm18432 0 18432 0 0 0 /redmine/mysql/data/ib_logfile13029 3029 0 0 0 0 /redmine/mysql/data/mycheckpoint/custom_query_view.frm
sudo ./pt-ioprofile -p 8534 -c times
2015年 04月 23日 星期四 17:54:09CST
Tracing process ID8534total pwrite fsync filename0.100162 0.000271 0.099891 /redmine/mysql/data/ibdata10.003826 0.000000 0.003826 /redmine/mysql/data/ib_logfile0
sudo ./pt-ioprofile -p 8534 -c sizes -g filename
以上数据输出中的 read write fread fwrite fsync 等指标分别是指什么呢? 多大的量才算正常?
read/write/fsync:
1. linux底层操作;
2. 内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作。
fread/fwrite/fflush:
1. c语言标准规定的io流操作,建立在read/write/fsync之上
2. 在用户层, 又增加了一层缓冲机制,用于减少内核调用次数,但是增加了一次内存拷贝。
关系参看下图:
1. 对于输入设备,调用fsync/fflush将清空相应的缓冲区,其内数据将被丢弃;
2. 对于输出设备或磁盘文件,fflush只能保证数据到达内核缓冲区,并不能保证数据到达物理设备, 因此应该在调用fflush后,调用fsync(fileno(stream)),确保数据存入磁盘。
参考:
1. http://blog.yufeng.info/archives/995
2. http://blog.csdn.net/ybxuwei/article/details/22727565
原文:http://www.cnblogs.com/ToDoToTry/p/4451281.html
mysql查看io情况_pt-ioprofile分析查看mysql的真实IO情况相关推荐
- 【169期】面试官:同学,分析一下MySQL/InnoDB的加锁过程吧
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 17 分钟. 来自:cnblogs.com/crazylqy/p/7611069.html Hello,大家好,我是良月柒. ...
- mac mysql查看本地端口占用,mac下面查看端口占用进程情况
在linux下面有netstat可以查看指定端口被哪些进程占用,但是mac下面就不好用了,看不到进程号. mac下面可以使用lsof来查看端口被哪个进程占用,比如查看80端口被占用情况: lsof - ...
- mysql io 100_MySQL服务器 IO 100%的案例分析
[问题] 有台MySQL 5.6.21的数据库实例以写入为主,IO %util接近100% 写入IOPS很高 [分析过程] 1.通过iotop工具可以看到当前IO消耗最高的mysql线程 2.查看线程 ...
- ceph bluestore 源码分析:ceph-osd内存查看方式及控制源码分析
文章目录 内存查看 内存控制 内存控制源码分析 通过gperftools接口获取osd进程实际内存 动态设置cache大小 动态调整cache比例 trim释放内存 本文通过对ceph-osd内存查看 ...
- MYSQL避免全表扫描__如何查看sql查询是否用到索引(mysql)
MYSQL避免全表扫描 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断,否 ...
- mysql查看binlog_MySQL的binlog数据如何查看
binlog介绍binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式基于 ...
- java gc 时间_Java GC日志查看,GC日志时间分析
Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...
- linux查看硬盘使用情况什么意思,linux 查看硬盘使用情况
在windows系统中,我们可以很容易的查看磁盘的使用情况,在linux系统中,我们可以使用命令来查看磁盘使用情况. 1.df命令 作用:用来查看硬盘的挂载点,以及对应的硬盘容量信息.包括硬盘的总大小 ...
- Linux下的十个好用的命令工具:查看系统版本,显示目录的大小,查看硬盘HDD/SSD,硬盘测速,ssh时自动输入密码,查看程序的内存使用情况,查看I/O的速度,查看ssh密码错误日志,查找文件
文章目录 1.查看系统版本 2.显示目录的大小 3.查看硬盘是HDD还是SSD 4.硬盘测速 5.在ssh的时候自动输入密码 6.查看程序的内存使用情况 7.查看I/O的速度 8.查看ssh密码错误日 ...
最新文章
- Linux 小知识翻译 - 「cron」
- js获取table的某个单元格的数据
- python识别12306验证码_Python3.4实现的12306最新验证码识别
- WebSphere Application Server v6中的问题诊断以及日志策略
- 嵌入式linux和pc机的linux对照
- 函数平移口诀_初三二次函数平移规律的口诀
- sftp api java_使用JSch实现SFTP文件传输
- 【HDOJ2087】剪花布条(KMP)
- a59s刷机包卡刷 oppo_OPPO A59S刷机包下载|OPPO A59S刷机包官方下载-太平洋下载中心...
- C++课设:GUI电话簿程序
- 图片转为PDF怎么弄
- iOS-企业级开发者账号发布流程
- 2014网易运营工程师笔试题(邮件运维)--题解--第二天
- Elasticsearch安装操作步骤
- SpringBoot RabbitMQ 整合使用
- Axure自定义Echarts交互图
- 查看表空间和表的使用率
- windows上搭建IOS开发环境
- 人生第一个 Offer :作为算法工程师,去大公司 or 创业公司?
- 深入理解计算机系统笔记_程序的机器级表示_3.9异质的数据结构