2023 KL的年终总结

接 : 《2020 KL的年终总结》 上一次写年总结还是在 2020 年,那会正是疫情爆发的一年,然后万万没想到,口罩一带就是 3年,已记不清什么时候才彻底和疫情拜拜。只记得有一天公司园区的围栏被拉走了,我漫无目的在在园区里乱走,享受自由。 回顾 新工作新挑战 是的,在接近年终快发年终奖的时间里,我闪辞了。可能很多人都有疑问,为什么不等拿完年终奖在走,为什么在凯京待...

阅读全文 »

记一次 golang 的 zstd 压缩、解压缩优化

问题背景 1、开发反馈 trs 的 stg 环境开启 zstd 解压缩后,内存有明显持续上涨趋势,最终导致 OOM 如图,内存频繁申请释放,当时分析导致 OOM 的原因是因为 stg 的 CPU 不够,导致 GC 不及时,调整 CPU 资源后确实 OOM 没有了。并未怀疑程序本身的性能问题 2、infra 同学发现 adx 的服务存在 zstd 压缩导致 CPU 资源消耗异常的问题,发现是压缩对象的 init 操作非常重导致。 问题分析 结合上面两...

阅读全文 »

Redis 流量复制、流量回放、流量镜像

背景 对 Redis 场景降本增效,涉及到将部分 Redis 实例迁移到类似社区 pika 这种支持 Redis 协议的基于 SSD 磁盘存储的项目(阿里云 Tair),降低存储成本。迁移过程需要进行性能验证,除了基本的选型压测之外,还必须对每个业务场景做全指令的性能覆盖,才能确保业务迁移的性能以及指令兼容稳定性。常规的做法是需要业务开发配合在工程里进行流量双发,或者小范围流量灰度。 以上...

阅读全文 »

Redis 的数据清理策略详解

背景 摸清 Redis 的数据清理策略,给内存使用高的被动缓存场景,在遇到内存不足时 怎么做是最优解提供决策依据。 本文整理 Redis 的数据清理策略所有代码来自 Redis version : 5.x, 不同版本的 Redis 策略可能有调整 清理策略 Redis 的清理策略,总结概括为三点,被动清理、定时清理、驱逐清理 被动清理 访问 Key 时,每次都会检查该 Key 是否已过期,如果过期则删除该 Key ,get 、scan 等指...

阅读全文 »

Sentry Snuba Clickhoue 数据源分析

Clickhouse 库表介绍 Sentry 和数据分析相关的表,只有四张,如下: errors_local : 存储所有的 issue 数据 transactions_local :存储所有的 trace 、span 数据,以及自定义的 measurements sessions_raw_local :存储 session 的原始数据信息,崩溃率的原始数据 sessions_hourly_local :存储 session 的小时粒度的统计聚合信息 分析案例 需求1:以下 SQL 用于实时的分析【启动开屏广告 p95 耗时】 SELECT extract ( ` release ` , \'[...

阅读全文 »

记 mysql-connector-java:8.0.28 的 bug 排查,你可能也踩坑了

前言 如标题,最终查明问题是因为 mysql-connector-java:8.0.28 的一个 bug 导致的。但是在真相未浮出之前,整个问题可谓扑朔迷离,博主好久没有排查过如此得劲的 bug ,随着一层层的 debug 深入,真相也随之浮出水面。这个问题属于底层 jdbc 驱动的问题,具有普遍性,可能不知不觉中,你的应用也在线上遭受这个 bug 的摧残,所以,请耐心听我讲完这个故事,然后回去检查下你的应用状态,...

阅读全文 »

基于 Prometheus + Grafana 实现 Nexus 监控观测

基于 Prometheus + Grafana 实现 Nexus 监控观测

前言 Nexus 是开源的 Maven 私服仓库,同时 Nexus 还支持 Npm 、 .Net、Golang 、Python 等开发语言的包管理。Nexus 也是我们重度使用的一个应用,Nexus 保存着 Tap 各开发组的代码构建产物。Nexus 出现问题会导致项目 CI 、CD 流程阻断。本文旨在通过 Prometheus + Grafana 实现 Nexus 运行时监控观测,帮助运维人员更加了解 Nexus ,轻松从容应对线上各种疑难杂症。 Nexus Version:3.29.2-02 metrics 采集 Nexus 提供...

阅读全文 »