一、系统突然巨卡
1.1 背景
事发于线上环境。正在运行的系统突然就特别卡。
1.2 部署情况
项目采用双机热备部署,Mysql采用主主同步;
1.3 现象
通过观察发现查询Mysql的接口非常慢,但是查询的表中的数据少的情况下,速度还算正常。于是又通过慢sql以及Arthas跟进了下具体的方法,发现Mysql查询很快,都是毫秒级别的,但是程序内反映的查库却需要60多秒,想想难道是IO问题?继续尝试观察IO,IO依然输入正常情况,并且系统中所有的指标均属于正常。
最后切换主备,系统就不卡了,再切回来又卡了,两个系统的相同的库,为什么出现这个问题?这不是最搞的,最搞的是,晚上回去睡了一晚上,第二天把主机切换过来,又正常了?????
二、线程资源问题
2.1 背景
本地开发一个“mongodb冷热数据分离”的功能。
2.2 开发逻辑
此模块共计迭代了2个版本。
第一个版本: 设计了两个线程池,一个线程池负责处理所有表的数据校验以及业务相关信息,另外一个线程池负责将A库中的数据搬移至B库中。
第二个版本:通过采用Reactor异步编程模式。两个线程池,一个线程线程池负责生成数据。另外一个线程池负责将生产的数据插入冷库中。
2.3 现象
以上两种开发逻辑最终实现的逻辑完全不同,其中第一种方法所有线程在运行一段时间后会停止运行,并且观察堆栈信息不存在死锁,系统cpu、io、网络完全正常,资源足够,对A库只存在读,对B库只存在写,所以也不存在数据库锁的问题;第二种方法正常运行,并且速度完全高于第一种。
2.4 WHY
- 为什么第一种方法会出现所有线程停止执行的情况?
- 为什么异步模型却可以解决这个问题?
三、连接kafka程序不工作
3.1 现象
线上环境开启kafka程序不工作,系统都无法登录,通过Arthas观察kafkaListener根本没有消费数据。关闭kafka却能正常工作。
????
无语了。。。。