摘要:Prometheus时序数据库-磁盘中的存储结构 前言 之前的文章里,笔者详细描述了监控数据在Prometheus内存中的结构。而其在磁盘中的存储结构,也是非常有意思的,关于这部分内容,将在本篇文章进行阐述。 磁盘目录结构 首先我们来看Prometheus运行后,所形成的文件目录结构 在笔者自己的机 阅读全文
posted @ 2021-03-01 09:59 无毁的湖光-Al 阅读(375) 评论(2) 推荐(2) 编辑
摘要:Prometheus时序数据库-内存中的存储结构 前言 笔者最近担起了公司监控的重任,而当前监控最流行的数据库即是Prometheus。按照笔者打破砂锅问到底的精神,自然要把这个开源组件源码搞明白才行。在经过一系列源码/资料的阅读以及各种Debug之后,对其内部机制有了一定的认识。今天,笔者就来介绍 阅读全文
posted @ 2021-02-22 10:42 无毁的湖光-Al 阅读(689) 评论(6) 推荐(2) 编辑
摘要:从Linux源码看Socket(TCP)的accept 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就从Linux源码的角度看下Server端的Socket在进行Accept的时候到底做了哪些事情(基于Linux 3.10内核)。 一个最 阅读全文
posted @ 2020-12-07 12:18 无毁的湖光-Al 阅读(603) 评论(4) 推荐(3) 编辑
摘要:从Linux源码看TIME_WAIT状态的持续时间 前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。所以,笔者就去Linux源码里面,一探究竟。 首先介绍 阅读全文
posted @ 2020-10-27 11:27 无毁的湖光-Al 阅读(1358) 评论(2) 推荐(2) 编辑
摘要:自己动手写SQL执行引擎 前言 在阅读了大量关于数据库的资料后,笔者情不自禁产生了一个造数据库轮子的想法。来验证一下自己对于数据库底层原理的掌握是否牢靠。在笔者的github中给这个database起名为Freedom。 整体结构 既然造轮子,那当然得从前端的网络协议交互到后端的文件存储全部给撸一遍 阅读全文
posted @ 2020-09-25 10:17 无毁的湖光-Al 阅读(5242) 评论(41) 推荐(58) 编辑
摘要:解Bug之路-记一次对端机器宕机后的tcp行为 前言 机器一般过质保之后,就会因为各种各样的问题而宕机。而这一次的宕机,让笔者观察到了平常观察不到的tcp在对端宕机情况下的行为。经过详细跟踪分析原因之后,发现可以通过调整内核tcp参数来减少宕机造成的影响。 Bug现场 笔者所在的公司用某个中间件的古 阅读全文
posted @ 2020-09-21 10:16 无毁的湖光-Al 阅读(2061) 评论(6) 推荐(10) 编辑
摘要:解Bug之路-ZooKeeper集群拒绝服务 前言 ZooKeeper作为dubbo的注册中心,可谓是重中之重,线上ZK的任何风吹草动都会牵动心弦。最近笔者就碰到线上ZK Leader宕机后,选主无法成功导致ZK集群拒绝服务的现象,于是把这个case写出来分享给大家(基于ZooKeeper 3.4. 阅读全文
posted @ 2021-06-22 09:50 无毁的湖光-Al 阅读(2265) 评论(9) 推荐(13) 编辑
摘要:日常Bug排查-Nginx重复请求? 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,其中不乏一些看起来很低级但很容易犯的问题。 问题现场 有一天运维突然找到我,要我协助排查一个问题。业务开发怀疑Nginx会重复相同的请求,就感觉Nginx自己重试了一样。而 阅读全文
posted @ 2021-06-16 10:18 无毁的湖光-Al 阅读(441) 评论(4) 推荐(0) 编辑
摘要:日常Bug排查-应用Commit报错事务并没有回滚 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^_^。 应用Commit报错并不一定回滚 事实上,这篇文章并没有什么排查过程。但这个问题却又是笔者经常遇到的。 笔者仅仅是想阐述一下当我们在 阅读全文
posted @ 2021-06-15 09:46 无毁的湖光-Al 阅读(258) 评论(1) 推荐(1) 编辑
摘要:日常问题排查-调用超时 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^_^。 Bug现场 这次的Bug是大家喜闻乐见的调用超时。即A调用B超过了5s 搜索一下日志,发现A系统在发出5s后超时。B系统在将近8s后才收到请求,也就是说B系统还 阅读全文
posted @ 2021-06-08 09:26 无毁的湖光-Al 阅读(1606) 评论(12) 推荐(10) 编辑
摘要:日常Bug排查-抛异常不回滚 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^_^。 Bug现场 最近有人反映java应用操作数据库的时候,抛异常不回滚。这还了得,不过笔者笃定肯定是用法的锅,不然就全乱套了。所以笔者去Review他的代码。 阅读全文
posted @ 2021-06-07 10:22 无毁的湖光-Al 阅读(348) 评论(2) 推荐(0) 编辑
摘要:日常Bug排查-消息不消费 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^_^。 Bug现场 某天下午,在笔者研究某个问题正high的时候。开发突然找到笔者,线上某个系统突然消费不了queue了。Queue不消费也算是日常问题了。淡定的先 阅读全文
posted @ 2021-06-04 09:58 无毁的湖光-Al 阅读(1237) 评论(2) 推荐(4) 编辑
摘要:ntp导致的时钟回拨 时钟回拨 我们的服务器时间校准一般是通过ntp进程去校准的。但由于校准这个动作,会导致时钟跳跃变化的现象。 而这种情况里面,往往回拨最能引起我们的困扰,回拨如下所示: 会引起什么问题 准点调度任务的误判 假设有一个任务每天0点时候获取昨天所有的数据进行对账,正常情况和时钟回拨的 阅读全文
posted @ 2021-05-31 09:34 无毁的湖光-Al 阅读(299) 评论(4) 推荐(2) 编辑
摘要:日常Bug排查-系统失去响应-Redis使用不当 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^_^。 Bug现场 开发反应线上系统出现失去响应的现象,收到业务告警已经频繁MarkAndSweep(Full GC)告警。于是找到笔者进行排 阅读全文
posted @ 2021-05-20 14:10 无毁的湖光-Al 阅读(2373) 评论(5) 推荐(9) 编辑
摘要:Prometheus时序数据库-报警的计算 在前面的文章中,笔者详细的阐述了Prometheus的数据插入存储查询等过程。但作为一个监控神器,报警计算功能是必不可少的。自然的Prometheus也提供了灵活强大的报警规则可以让我们自由去发挥。在本篇文章里,笔者就带读者去看下Prometheus内部是 阅读全文
posted @ 2021-03-31 10:42 无毁的湖光-Al 阅读(240) 评论(5) 推荐(0) 编辑
摘要:解Bug之路-主从切换"未成功"? 前言 数据库主从切换是个非常有意思的话题。能够稳定的处理主从切换是保证业务连续性的必要条件。今天笔者就来讲讲主从切换过程中一个小小的问题。 故障场景 最近线上进行主从切换,大部分应用都切过去了,但是某些应用的连接确还在老的主(新的从)上面。 这让对应应用的开发百思 阅读全文
posted @ 2021-03-30 09:38 无毁的湖光-Al 阅读(390) 评论(5) 推荐(3) 编辑