高性能MySQL:使用strace

发布网友

我来回答

1个回答

热心网友

  使用strace

  strace 工具可调查系统调用的情况 有好几种可以使用的方法 其中一种是计算系统调用的时间并打印出来

  $ strace cfp $(pidof mysqld)

  Process attached with threads interrupt to quit

  ^CProcess detached

  % time seconds usecs/call calls errors syscall

  

   select

   futex

   read

   unlink

   write

   pread

   _llseek

  [some lines omitted for brevity]

  

   total

  这种用法和oprofile 有点像 但是oprofile 还可以剖析程序的内部符号 而不仅仅是系统调用 另外 strace 拦截系统调用使用的是不同于oprofile 的技术 这会有一些不可预期性 开销也更大些 strace 度量时使用的是实际时间 而oprofile 使用的是花费的CPU 周期 举个例子 当I/O 等待出现问题的时候 strace 能将它们显示出来 因为它从诸如read或者pread 这样的系统调用开始计时 直到调用结束 但oprofile 不会这样 因为I/O系统调用并不会真正地消耗CPU 周期 而只是等待I/O 完成而已

  我们会在需要的时候使用oprofile 因为strace 对像mysqld 这样有大量线程的场景会产生一些副作用 当strace 附加上去后 mysqld 的运行会变得很慢 因此不适合在产品环境中使用 但在某些场景中strace 还是相当有用的 Percona Toolkit 中有一个叫做pt ioprofile 的工具就是使用strace 来生成I/O 活动的剖析报告的 这个工具很有帮助 可以证明或者驳斥某些难以测量的情况下的一些观点 此时其他方法很难达到目的(如果运行的是MySQL 使用Performance Schema 也可以达到目的)

       返回目录 高性能MySQL

       编辑推荐

       ASP NET MVC 框架揭秘

       Oracle索引技术

       ASP NET开发培训视频教程

lishixin/Article/program/MySQL/201311/29692

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com