MySQL太慢?试试这些诊断思绪和器材
第一步,我们来看一下数据源,Linux 给我们提供的数据源包罗操纵体系内核态提供的视察点和用户态提供的视察点,MySQL 很早之前就提供了用户态的视察点。 第二步,怎样把数据抽出来。以下这些器材中各人最认识的应该是 perf 和 ftrace,sysdig 也有人在用,其余的也许有所耳闻,这是从操纵体系里抽取数据的要领。 第三步,数据处理赏罚前端,前端常用的也是 perf 和 ftrace。假如各人对 perf 很认识的话会知道 perf 出来的数据是一个树形的数据,并可以跟这棵树举办交互,好比说: 查察某个函数运行了多久,哪一个函数的时刻最长,这个是数据处理赏罚前端。 我们来比拟一下通例的四类体系视察器材:ftrace, perf_events,eBPF 和 Systemtap,这四个器材到底有什么差异,看看 Linux 为什么提供这么多视察器材。 ftrace:ftrace 是 sysfs 中的一个桩,通过这个桩内核提供了一种视察的情势——把想视察的函数署名打到这个桩里,然后操纵体系就会提供这个函数运行的状况。ftrace 的布局如左图, 数据处理赏罚前端和收罗端是 ftrace, 数据源是下面这一堆。 perf:常用的 perf 的道理是操纵体系提供了一个体系挪用可以将数据写到一个缓存中, 然后客户端把这些数据端抽取出来然后出此刻表现器上。 eBPF:这是本文想重点保举的。以上两种方案一种是操纵体系提供的文件体系上的桩,一种是操纵体系提供的体系挪用,而 eBPF 是将一段代码直接插到操纵体系内核某一个位置上的机制。 Systemtap:它的道理是将一段 C 的代码编译成一个内核模块,然后将这个模块嵌到内核里边去,它不是由内核提供的一个机制,而是由内核的模块机制提供的一种成果。 先容了这四种视察器材的差异,各人在选取视察器材的时辰就知道应该怎么选。 这四种视察器材对体系危险最轻的是谁? 对体系危险最轻的是体系挪用,这是体系理睬出来的处事。然后是 ftrace,这是体系在文件体系层面提供的一个口,汇报你可以通过这个口跟体系交互。 对体系侵入性最强的是谁? 对体系侵入性最强的应该是 eBPF,由于它直接将一根代码嵌入到体系里边去做,最不不变的应该是 System Tap,由于它是体系的一个模块, 又提供了很是伟大的成果。 上图是 eBPF 的架构图,eBPF 先将一段措施编译成二进制代码,然后插入到操纵体系里,操纵体系运行这段代码的时辰,将收罗到的数据吐到操纵体系自己的空间里,然后再做同一返回。 eBPF 布局最焦点的部门在于把代码插入到操纵体系中运行,它必要做各类安详掩护才气完成这一点,以是这也是这个机制伟大的处所。 下面引用一个开源的 eBPF 剧本集 bcc, 快速看一下 eBPF 能做什么, 这些成果都是开箱即用的。 bcc (eBPF 剧本集) 行使举例 MySQL 的哀求耽误说明: 一个 MySQL 包袱了许多营业,上千个并发˙中,哪一个 SQL 最慢,到底有哪些 SQL 在一秒以上,除了 slow log 以外,还可以用这种要领来看。 这个呼吁的功效分为三列,它的第一列是哀求的耽误,指数级递增,单元是微秒,中间一列是它的掷中数,假若有一个哀求掷中了 64-127 微秒这个区间,掷中数会加一,最后一列是它的漫衍图,它在统一个陈诉里提供了数值的方法和图的方法,可以很轻易看到功效。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |