牧舟的博客

向所有虚度的时光宣战

神奇了,怎么我update一行记录执行了好几十秒

Jumping from failure to failure with undiminished enthusiasm is the big secret to success.

前几天突然收到了线上接口错误报警,错误量不多,但一直在持续,点开日志一看,发现是SQL执行超时 org.springframework.dao.RecoverableDataAccessException: ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: C...

真实业务场景:计算用户击败了多少人

What you get by achieving your goals is not as important as what you become by achieving your goals.

最近遇到一个业务需求,简单的crud解决不了,感觉有点意思,纪录一下。 具体业务场景是这样的: 每个用户有个分数,根据分数算一下用户击败了多少人,比如 “击败了99%的同路人”。 分数每周日0点统一更新,且分布在[0, 70_0000]之间,近似正态分布。 这问题乍一看挺简单的,根据分数排个序,自然就能算出答案。 但这个功能至少有3000w用户,并且随着时间流逝,用户数会...

记录一次线上故障2

You never lose. You either win or learn.

之前遗留下了两个问题还没答案: Q3:为什么其他接口的RT也暴涨了? Q5:为什么ECS的内存会飙升到100%? 这俩问题有点复杂,写了个demo,经过各种实验之后,终于搞明白了原因。 从JDK21和虚拟线程说起 由于各种原因,这个项目使用了最新版的JDK21和虚拟线程的特性,并使用G1垃圾回收器。 本文会用到以下这些相关的术语,如果不太熟悉,可以参阅网上其他文章。 虚拟线...

记录一次线上故障

Everything is difficult until you know how to do it.

前段时间负责了一个项目,预测QPS会比较高,上线之前也进行了压测,QPS压到22w系统还很稳定,并且仍有一些余力,已经满足业务需求。 信心满满,本以为不会出任何问题,结果上线活动一开始,系统就直接崩了,记录一下本次故障的现象和原因。 故障现象 用户侧 页面无法进入,大量接口报超时。 基础云服务(阿里云) SLB,故障期间流量断层下跌 MySQL和Redis故障期间运...

分享公司推荐的书单

The supreme happiness of life is the conviction that we are loved.

分享一下公司推荐的书单,入职这么久,才只看完了其中一本😂。