MySQL太慢?试试这些诊断思路和工具
这段程序的逻辑是这样的:
我用结束时间减开始时间,减一下得到一个延迟,然后把延迟扔到一个统计容器里面,这个事就结束了。这是我要写的第一个程序,是嵌到内核里的程序,但是需要一个外壳的程序负责嵌入。 这个外壳程序的逻辑也非常简单,把刚才那段内核的程序嵌到 MySQL 的观测点上,嵌到内核里面去,然后把结果集拿出来,打印出来就结束了,这是如何写一个 eBPF 的脚本,大家唯一需要做的事情就是这两个程序,然后运行一下。 这个程序的核心只有 45 行,中间忽略了负责差错处理的一部分。只需要把现在的脚本拿下来抄一抄,改一改就可以完成很多的功能了。 这么好的方法为什么很多人不知道呢?
所以如果大家受到限制,再推荐换一个工具:systemtap。 Linux 2.6 就已经有了,但是它的机制是写一个内核模块,这种机制其实不是特别稳定,它为了解决不是特别稳定的问题增加了若干限制,比如说能在内核中使用的内存大小有限制,采集频率也有限制,对整个内核性能的影响百分比也有限制,在这些限制参数都开起来的情况下,它还是比较安全的。 但是很多观测功能就必须要把这些限制关掉,一旦关掉内核就不是很稳定,所以这个工具,我没有敢把它的缺点写在上面因为确实是个好的工具,我们也很难说它的这个缺点是个致命的缺陷,但是不太推荐在生产环境上使用,但是在测试环境上确实是非常好玩的一个工具,如果大家用不了 eBPF 的话可以用 systemtap 来做一些诊断。 还有很多其他的工具: 至于如何选择,大家直接谷歌一下有专门的文章教大家怎么选择这些观测工具。但是总的来说没有一个科学的思路,只有尝试,不停的尝试。 黄炎,爱可生研发总监,深入钻研分布式数据库相关技术,擅长业界相关 MySQL 中间件产品和开发,以及分布式中间件在企业内部的应用实践。 【编辑推荐】
点赞 0 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |