我是如何把 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 的方式...
共计 67 篇文章,9 页。