主页

我是如何把 Tokio Runtime 给卡死的

一、前言 最近在忙着做 nacos-sdk-rust 3.x 版本的重构, 在重构的过程中一切都很顺利, 但是后面的验证过程中, 发现程序每隔 30 分钟就会卡死, 心跳也不发了. 这就很奇怪了. 于是就研究了一下 tokio 的调度机制. 二、给你一段卡死的代码 #[tokio::test(flavor = "multi_thread", worker_threads = 8)] pub async fn test_switch() { let mut handles = Vec::new(); handles.push(tokio::spawn({ async { l...

阅读更多

nacos 客户端 bug 导致服务批量下线

一、前言 ​ 在某个凌晨,本来打算睡觉的时候.发现工作群里边的变得热闹了起来.”服务挂了”,“一个机房的服务全部挂了”,“网络问题吧.”好不热闹.心想反正不关我事,睡觉吧,猝死了可不好. ​ 好巧不巧,第二天上班的时候,这个问题居然安排我去调查.倒霉了. ​ 生产环境: Nacos-server Nacos-client   1.3.1 1.4.1   ​ 去案发现场看了一下,服务并没有挂,但在 nacos 控制里看服务却下线了.下线原因是没有发送心跳,超过15秒后,server 端就把这个服务给踢了.那么排查的方向就确定了,查一查 na...

阅读更多

docker 模拟双机房多网段通信

一、前言 ​ 最近在搞 redis 双活,在折腾 redis 双活的模拟环境,考虑到生产环境是不同的机房,就萌生了使用 docker 来模拟多机房不同网段的理想环境. ​ docker 网络是采用桥接完成,会有一张 docker0 的网卡,每个容器都是在 docker0 这张网卡下.我记得网上有张描述 docker 网络通信的图,这里就不放出来,随便百度一下就有的东西.总之,明白网络通信的原理是很重要的. 二、干活 ​ 由于是在 mac 系统下干活,想要模拟还得使用 docker-machine 来搞.以下会涉及到 docker-machine 命令,但核心部分还是在设置网络上,设置网络的命令是没有任何差异的. 2.1 使用 docker-machine 创建一个跑 dock...

阅读更多

Docker Machine 在 Big Sur下的各种问题

一、前言 ​ 最近需要模拟 2 套环境来做 redis 双活测试,由于涉及到不同的网段通信,但受制于 docker 在 macOS 系统下的实现方式,没办法做呀.就想到了用虚拟机来搞,既然都用到了虚拟机为何不用 Docker Machine 来搞呢? 反正都是跑在虚拟机上的,在怎么比在虚拟机上装个 Ubuntu 来的快吧. ​ 于是,…我还是低估了难度,噩梦开始了. 二、Docker Machine VS virtualbox ​ Docker Machine 这个从官方的文档来看还是挺简单的,并且命令也很简单.官方推荐用的 driver 是 virtualbox,按照官方的文档一步一步的做来下,发现使用 virtualbox 无法成功的创建 machine,就算创建了,后面的...

阅读更多

druid连接池配置刷新导致数据库被锁

一、前言 ​ 说到 druid 这个连接池,个人感觉还是行的.但 github 2k 多的 issue ,还是让人喜欢不起来呀.在自己的项目里一般都不会选择 druid 这个连接池,毕竟不需要 druid 的监控功能,用 spring 自带的连接池就足够了. ​ 但,其他的项目非要用这个连接池,挡都挡不住.没办法~毕竟我说了不算.后面问题就来了,项目还没上线跑着跑着数据库就被锁了,关键是不止一次的被锁.这个问题还是有点意思的,当时就去把日志取了下来分析了一下.好玩! ​ 先说一下他们用 druid 连接池干了什么事情, druid 连接池有功能是可以配置数据库密码为密文的,在初始化连接池的时候由 druid 连接池的 filter 进行解密.这样做的好处是防止数据库的密码泄露,这...

阅读更多

asus-b85-pro-g+i5-4450黑苹果

一、前言 ​ 最近一段时间可谓是DIY玩家的噩梦,各种硬件疯涨,特别是在虚拟货币的加持下显卡都上天了.本来还想去淘一张rx580没想到这三朝元老都涨价到了1800左右. ​ 迫于无奈(穷),在加上最近有点时间可以折腾一下.就想着折腾一下黑苹果.看了看家里的电子垃圾,心里暗想,还是让他们发光发热一下吧(😭). ​ 本教程大多数都是从 opencore install guide 官网上摘抄过来的,如果有啥问题那就是我理解的问题的. 二、配置       cpu I5-4450 主板 Asus-b85-pro-g ...

阅读更多

WebLogic 第三弹,代码都去哪了,绕过https证书验证失效?

WebLogic 第三弹,代码都去哪了? 一、前言 ​ 在开发过程中,总能遇到奇奇怪怪的问题。这次这个问题比较好玩,故记录下来。整个事情是这样的,前段时间上线了一个新的需求,结果发现调用三方接口报错了。报错的信息是对方 https 的证书有问题,不能通过证书校验。 ​ 这个问题其实很好解决,让接口方检查一下证书就好了。奈何这里比较弱势,做了甲方却是乙方的地位。于是开发的同学就提出,可以绕过https的证书的校验,由于不是我负责的需求,我也不能插话不是。 ​ 很快啊,代码就改造完了(增加了跳过的代码)。我简单的贴一下代码。 ​ 乍一看没啥问题,开发环境里也运行的很好,测试环境里也运行的很好。嗯。冲吧,上线吧! ​ 不幸的是,上线后,这块儿跳过的代码并没有生效,依旧的报错了...

阅读更多

WebLogic Metaspace OOM 解决案例(后续之SkyWalking)

WebLogic Metaspace OOM 解决案例(后续之SkykWalking) 一、前言 ​ 之前解决了因为 nacos 未能关闭线程,导致 weblogic 中的 ChangeAwareClassloader 被 nacos 的线程长期持有的问题。虽然是解决了,但是还是大意了。由于当时复现的环境跟线上的环境并不是完全一致,所以还是没能根本性的解决。没办法只能把复现环境尽量调整到跟线上一致,再来分析一波。 ​ 先预告一下,这次的罪魁祸首是 SkyWalking 。emmm,标题已经剧透了,😅。 二、SkyWalking ​ SkyWalking 是业内流行度很高的 apm ,目前在 apache 旗下。skyWalking 在 java 端可以使用 agent 的方式...

阅读更多