- 博客(102)
- 收藏
- 关注
原创 Prometheus 高可用演练篇:桶空了一整天,而 Thanos sidecar 全程显示 Up
给上一篇 Prometheus 高可用理论篇补一次实测——14 个容器的 Thanos 演练栈,五个演练全跑一遍。结果是打脸:「replica 忘了 labeldrop 会告警翻倍」翻的根本不是通知次数;三个组件因为同一个 uid 错配出了故障,其中 sidecar 最阴——进程一直 Up、查询全正常,可对象存储里一整天没进去一个字节。附完整 docker-compose。
2026-09-10 18:04:38
395
原创 Prometheus 高可用理论篇:双跑两台不叫高可用,缺的是查询层去重
上一篇说清了官方那句「不集群、不副本」,这篇讲怎么办。核心结论:双跑两台只解决采集和告警,存储 HA 得靠查询层去重——A 挂 1 小时,A 库里那个洞就永久存在,必须有人把 B 的数据缝过来。含最易踩的坑(`replica` 不 labeldrop 则告警全部翻倍)、Alertmanager 集群 fail-open 的诚实边界、Thanos 能 fill the gaps 但 Compactor 必须单例、vmagent 替换采集端,以及三档架构选型。
2026-09-10 16:17:39
507
原创 Prometheus TSDB 拆不出来、也存不了一年:4 条外部存储出路 + 容量测算
读者问:Prometheus 的 TSDB 能独立部署吗?存更多数据有限制吗?答案是不能——TSDB 是嵌入式库,`data` 目录一个 `lock` 文件就挡住了双进程,官方明确「不集群、不副本、不支持 NFS」。但存储能换。本文含 TSDB 写入路径、官方公式算出「50 万 series 存 90 天要 518 GB」、remote_write 三个必踩的坑(远端挂 2 小时就永久丢数据),以及加盘 / VictoriaMetrics / Thanos / Mimir 四条路怎么选。
2026-09-09 18:21:03
542
原创 MinIO 集群怎么搭?先说个坏消息:官方仓库已经归档了
有读者让我讲讲 MinIO 集群。动笔前查证发现一件更该先说的事:minio/minio 官方仓库已于 2026-04-25 归档,README 明写“不再维护”,社区版只发源码、不再提供预编译二进制,而分布式(集群)能力归了商业版 AIStor Enterprise,免费那档是单机。本文如实讲清现状对三类人各意味着什么,然后补上纠删码这一课(EC:N 怎么算、为什么 4 盘只有一半可用容量、生产为什么 EC:3 起),以及两个第一天就该知道的硬约束:不能给已有节点加盘扩容、单机不能原地升级成集群。
2026-09-09 18:02:05
423
原创 RustFS 集群掉 2 块盘就读不了,MinIO 照读不误
上一篇单机拔盘只验到「写」的塌陷点。补搭四节点集群一跑就翻车:`size=4 / parity=2` 下在线掉到 2 块,按公式读法定是 2、本该能读,实测读写全挂,还返回一个把人往限流方向带偏的 `SlowDown`。同一天用完全相同的形状跑了套 MinIO 做对照——同一档位读正常。附**两套同形状 compose**(RustFS + 对照用的 MinIO)、零依赖 S3 客户端和三条能直接抄的告警判据。
2026-09-08 15:08:31
339
原创 RustFS 监控一条龙:它没有 /metrics 端点,而且是官方故意的
从 MinIO 迁到 RustFS,第一个撞的墙是 Prometheus 抓不到它——RustFS 没有 `/metrics`,指标走 OTLP 推给 collector,中间多一跳。本文给出实测版接入方式、276 个指标的真实名字、15 条告警规则和一套自建 Grafana 看板(全网没有现成的,已传 grafana.com,ID 25751)。⭐ 更值钱的是四个「望文生义」的坑:其中一个让我自己写的告警规则变成永不触发的哑弹,靠拔盘实测才挖出来。
2026-09-08 14:59:49
452
原创 Jenkins 构建卡了 23 天,abort 按钮点了没用
一条告警说某个构建跑了 23 天。可打开 Jenkins——0 of 2 executors busy、队列是空的、模块没一个显示「构建中」、上次构建 2 秒就成功了,四个地方都说「没有构建在跑」,我一度判定「指标坏了」,这个判断是错的。它藏在 Maven 模块页,连构建丢弃策略都放过了它,理由是「it is still running」:靠「还在运行」躲过清理,又靠躲过清理继续「运行」。而红叉点下去纹丝不动,往下每层标准做法也依次失效。本文有完整追查、从容器日志挖出的根因,和真正收得掉它的办法。
2026-09-07 21:23:29
332
原创 Jenkins 监控一条龙:接入、看板 9964、11 条告警规则直接抄走
给 Jenkins 配一套完整监控,一条龙走完四步:装 Prometheus metrics 插件接入(两行配置,⚠️ 指标名前缀可配,照抄网上的多半对不上你的)、导 Grafana 看板 9964(19 个面板逐块实测,4 个 No data、1 个数是错的都标出来了)、11 条告警规则(从 Jenkinsfile 反模式反推,不是照指标列表堆的;已过 promtool 校验并真实加载运行)、以及配完之后怎么用两分钟确认它们不是哑弹。
2026-09-07 21:15:25
493
原创 都说 Elasticsearch 吃内存,凭什么几百 G 日志存得下还查得动?
排查 SkyWalking 日志积压时冒出一个反直觉的问题:ES 常被说成「吃内存」,凭什么几百 G 日志存得下还查得动?答案是 ES/Lucene 数据根本不全装内存——它落在磁盘的不可变 segment 文件里,靠操作系统 page cache 把热数据按需缓存。本文从这个疑问出发,串起写入链路(buffer/translog/refresh/flush)、段合并、倒排索引与 doc values、分片副本与索引滚动,最后给出堆别超 32G、留内存给 page cache、控住单分片大小等实用经验。
2026-08-06 18:15:00
355
原创 SkyWalking 第三次积压超 3 亿:分片又小又匀,却只有一台机在扛
SkyWalking 又积压近 3 亿条,只有一台机 CPU 98%、磁盘读 180MB/s,另两台却 <10%。上次是单分片 20GB 的段合并热点,这次分片又小又匀(36 片、每片 2.2GB)却照样单机爆。顺着「时间线 + 磁盘读定位 + pidstat + merge stats + free」一路追:给某业务开全量采样后段量×3,而这台机同时还跑着 OAP,把 page cache 挤干,合并被迫读物理盘、IO 打满。把 OAP 迁走、page cache 一还,三台立刻均衡、积压掉头下降。
2026-08-06 13:04:03
715
原创 10 万人抢 100 件:秒杀系统的 5 道防线,从浏览器一路扛到数据库
秒杀的难点从来不是"快",而是瞬时洪峰、超卖、刷子、雪崩四个魔鬼同时登场。本文把秒杀系统拆成 5 道防线——前端与网关拦截、Redis + Lua 原子预扣库存防超卖、MQ 异步削峰下单、防刷限购保公平、熔断降级兜底,逐层把 10 万请求过滤成 100 个有效订单,并附完整链路图与可运行代码。
2026-08-05 19:09:28
362
原创 改一条 Skill 规则要改四处?一条 ln -s 让多个 AI 编码工具共享同一份配置
Claude Code、Codex、QoderCN 国际版和国内版,Skill 格式一样但目录各不同,改一条规则要改四处。本文用软链做到「一份维护、处处生效」:真相源只存一份 SKILL.md,各工具 skills 目录 `ln -s` 指过去。重点是三个反直觉的坑:Codex 项目级读的是中立目录 `.agents/skills` 而非 `.codex/skills`;QoderCN 项目级只认项目根 `skills/`;`~/.agents/skills` 项目层一条顶一片、全局层只覆盖一小组工具。
2026-08-05 17:33:33
523
原创 MySQL 主从延迟每天上午准时飙升:翻遍慢日志查无真凶,IO util 100% 竟是障眼法
MySQL 5.7 一主两从,每天上午从库延迟准时爬到近 1.5 分钟再回落,呈「三角形」。抓主从慢日志却查无真凶;`SHOW SLAVE STATUS` 显示「拉到本地却重放不动」,瓶颈在单线程 SQL 重放。更坑的是监控 IO util 常驻 100%,差点误判「盘到顶、多线程也没用」,`iostat` 实测打脸:await 0.8ms、队列深度 1.3、盘其实很闲。真凶是单线程重放,解法是并行复制 LOGICAL_CLOCK + 放宽 redo 刷盘。
2026-08-04 18:15:00
344
原创 MinIO 监控一条龙:看板全是「无数据」?Prometheus + Grafana 从搭建到告警
MinIO 配好 Prometheus,Grafana 导的一堆看板却全是「无数据」、只有 Uptime 有数?这是 MinIO 监控最经典的版本坑:老看板查的是废弃旧指标名(`minio_network_*`),新版早改成 `minio_s3_traffic_*`、`minio_cluster_health_status`。本文一条龙走完搭建、开指标(public)、cluster/node/bucket 三端点接入、官方 minio-dashboard.json、告警,并把「无数据」讲透。
2026-08-04 12:52:19
424
原创 arthas 5 分钟揪出 HikariCP 耗尽:从 thread 到 vmtool 的实战排查
arthas 5 分钟揪出 HikariCP 连接池耗尽的排查 SOP。接口大面积超时但进程还活、日志无 error,用 thread 看线程状态(80% TIMED_WAITING)、thread <id> 看到栈卡在 ConcurrentBag.borrow 确认连接池耗尽,再用 vmtool getInstances 拿 HikariPool 实例、看 jdbcUrl 锁定罪魁数据库 ClickHouse。同款套路通杀线程池/缓存/队列。
2026-08-03 13:18:08
361
原创 Spring Boot 的 `/actuator/health` 不是免费的:健康检查打爆连接池的反面教材
Spring Boot 的 /actuator/health 默认不是免费探活接口的反面教材。它串行 ping 所有 DataSource/Redis/Kafka,每次借连接执行 SELECT 1;当心跳被 404 放大到 480 QPS 叠加 ClickHouse 慢查询 hang,按 Little 定律瞬间打爆大小仅 10 的连接池、374 线程排队。解法:关昂贵 indicator、自写空接口、探活与健康检查分离。
2026-08-03 13:09:57
519
原创 MongoDB 慢查询排查实战:从几十 G 日志到 Top 30 报告,5 分钟定位真凶
MongoDB 慢查询告警耗时 2317ms,可 mongod.log 有 87G,grep 跑 5 分钟没结果。给出一套 SOP:tail 抓行尾 20 万行、按 $date 切片、scp 下载,再用约 200 行 Python 归一化查询形状聚类、按总耗时排序出 Top 30 报告。真凶是高频 find 排序字段走不了索引、退化为内存排序,按 ESR 原则建复合索引解决。
2026-07-30 18:30:00
748
原创 Linux 网络排查命令速查:连接数暴涨到 2 万那晚,我是这样用 ss、tcpdump、mtr、dig 一层层揪出真凶的
服务器突然抽风、502、新连接建不出,网络排查工具一大堆却不知先敲哪条?本文按「连通性 → 端口连接 → DNS → 抓包 → 网卡流量」分层速查 ss、tcpdump、mtr、dig、lsof、nc、ip 等核心命令,重点讲 ss 怎么按状态数连接,并复盘一次 TCP 连接从 5k 暴涨到 2 万的实战,顺带拆穿 TIME_WAIT、CLOSE_WAIT、%util 三个经典误解。
2026-07-30 12:13:57
427
原创 OLAP 数据库混进 OLTP 链路:一次 ClickHouse 拖死 API 101 分钟的复盘
OLAP 数据库 ClickHouse 被"试验性"接入 OLTP 主链路,一次普通发版将其引爆:CK 磁盘满且无告警导致查询 hang,Spring Boot /actuator/health 每秒 480 次心跳逐个 ping 依赖借走 CK 连接,HikariCP 连接池 10 连接被 374 线程争抢耗尽,TCP 连接数从 5k 飙到 22k,API 间断不可用 101 分钟。arthas thread+vmtool 5 分钟锁定 CK 连接池,根因是 OLAP 不该进 OLTP 主链路。
2026-07-29 19:05:48
459
原创 SkyWalking 日志又积压 1900 万:Kafka 分区明明均匀了,凶手却藏在 ES 段合并里
SkyWalking 日志积压逼近 1900 万,但 Kafka 分区已均匀,瓶颈下移到 ES。顺着「生产→消费→落库」逐段排查,用 hot_threads、_cat/shards、thread_pool 三连定位真凶:大头日志被 SkyWalking 归为 super dataset(36 分片/0 副本/DAY_STEP=5),单分片 20GB 让段合并轮流打满磁盘 IO、反压积压。DAY_STEP 从 5 改成 1、单分片降到 4.6GB 后几分钟清空。两坑:分片配置是烟雾弹、热点轮动≠数据倾斜。
2026-07-29 13:09:54
733
原创 PostgreSQL 常用命令速查:MySQL 用户平滑上手,psql 元命令 + 库表管理 + 运维排查一篇通
MySQL 用户第一次进 psql 就懵——`SHOW DATABASES`、`USE` 全不认。本文把 PostgreSQL 最常用命令一篇讲清:psql 反斜杠元命令、库 / schema / 表管理、用户权限、`\copy` 与 `pg_dump` 导入导出、运维排查三板斧(`pg_stat_activity` 看连接、`pg_terminate_backend` 杀查询、`pg_stat_statements` 抓慢 SQL),每类附 MySQL 对照。
2026-07-28 18:30:00
401
原创 限流命中后该怎么办:直接丢、阻塞等待、延迟重投三种姿势的取舍
下游三方有 QPS 配额,限流命中后到底怎么办?本文对比直接丢、阻塞等待、延迟重投三种姿势的取舍,落地基于 Redisson 全局令牌桶 RRateLimiter,命中即入延迟队列削峰重投,用退避加随机抖动破解惊群,重试耗尽兜底加 metrics 告警,并给出限流器异常降级放行、应用内环形 hash 采集单秒峰值 QPS 等踩坑经验。
2026-07-28 17:45:00
415
原创 uv 常用命令速查:一个工具干掉 pip + venv + pyenv + pipx + poetry,Python 工具链从此清爽
Python 的工具链一直很碎——装包 pip、虚拟环境 venv、Python 版本 pyenv、命令行工具 pipx、项目依赖 poetry,五个工具五套记忆。uv 用一个 Rust 写的二进制把它们全收编了,还快 10~100 倍。本文按「项目管理(init/add/run/sync/lock)、pip 兼容接口、Python 版本管理、工具管理 uvx、PEP 723 脚本」五块,把 uv 最常用命令一篇讲清,并附「旧工具 → uv」对照表,迁移不迷路。
2026-07-27 18:32:15
373
原创 上传 20MB 视频花了 11 分钟:真凶不是 Nginx,也不是后端,是跨境丢包
后台上传一个 20MB 视频要 11 分钟,nginx 日志显示 655 秒全耗在「收 body」。顺着「先把服务端从等式里拿掉」的思路,用 `/_uploadtest` 黑洞接口测纯上行、`networkQuality` 测本地基准、`mtr` 看逐跳延迟丢包,最后定位真凶:本地上行有 33Mbps,但跨境国际出口 227ms 延迟 + 26% 丢包,把单条 TCP 上传打到 1~2Mbps。解法不在 nginx 而在客户端——分片并发上传,实测从 2Mbps 拉到 9.4Mbps。
2026-07-27 17:30:00
891
原创 RocketMQ 4.x 任意秒数延迟消息工程实战:MQ 粗延迟 + Redis 补精度 + MDC 链路透传
RocketMQ 4.x 只有 18 个固定延迟级别,给不了「73 秒」这种任意秒数。本文拆解一套生产跑了两年的混合方案:MQ 标准级别打底做粗延迟、Redis 延迟队列补 5 分钟内的零头,可靠性靠 MQ、精度靠 Redis;同时解决事务回滚不留消息、MDC 链路跨线程不断链两个工程难题,并附 RocketMQ 5.x 时间轮原理对照。
2026-06-11 21:28:57
635
原创 trade 是数据域还是主题域?数仓分层里最容易搞混的一对概念,一篇讲透
这篇文章探讨了数据仓库中数据域与主题域的区别及目录组织原则。作者通过一个目录归属的案例,引出数据域和主题域的概念混淆问题,指出纵向分层(ODS/DWD/DWS/ADS)与横向业务归类是两个正交维度。数据域面向业务过程(如交易域),用于建模层;主题域面向分析视角(如支付成功率),用于消费层。文章提出目录划分的两条口诀:区分"可加基础度量"与"算好指标",以及"多处复用"与"绑定单一报表"。最后总结了常见误区,强调分析主题应按"回答什么问题"来划分。文章为数据仓库的建模和分层提供了清晰的实践指导。
2026-06-11 13:23:04
249
原创 Redis 大 Key 排查实战:连踩两个工具的坑,最终用 SQL 揪出 3.3GB 的隐藏大户
线上 Redis 内存告警,--bigkeys/--memkeys 只能看到每种类型最大的那一个,redis-rdb-tools、HDT3213/rdb 又都解析不了 Redis 7.4+ 的 RDB 12 格式。本文用 redis-rdb-cli 导出全量 Key,灌进ClickHouse/MySQL 跑 SQL,按前缀逐级下钻,揪出 120 万个小 Key 同前缀堆出的 3GB 隐藏大户,并给出加 TTL、拆分、UNLINK 等处置方案。
2026-06-10 22:22:09
677
1
原创 监控指标自己把进程打到 CPU 100%:一次 safepoint 风暴的深度复盘
本文记录了一次由监控指标引发的线上故障排查过程。某台 consumer 服务器 load5 飙升至 8.5,经排查发现罪魁祸首竟是监控组件 micrometer 自身。通过 top、jstack 等工具分析,定位到 5 个 Gauge 指标导致 VM Thread 持续占用 CPU 25%,造成 safepoint 风暴问题。文章详细展示了从告警到根因的完整排查链路,包括使用 hot-stack.sh 脚本捕捉瞬时高 CPU 线程,最终揭示了国内技术博客较少深入讨论的 safepoint 风暴现象及其对系统
2026-06-10 18:36:05
546
原创 MongoDB 主从切换排查实战:从 docker ps 到 jq,一套 SOP 定位死因
摘要 本文针对 MongoDB 主从切换故障,提供了一套标准化的 8 步排查 SOP(标准作业程序),帮助运维人员快速定位问题根源。文章首先强调了 SOP 的重要性——避免慌乱中遗漏关键证据,并通过 9 条 Prometheus 告警规则实现监控落地。主从切换可能是由 OOM、存储层故障、磁盘满等多种原因导致,排查时需要交叉验证容器状态、dmesg 日志、mongod 日志和副本集状态。关键步骤包括:检查进程存活情况、分析 OOM 痕迹、解读 mongod 日志中的异常信号(如 SIGTERM/WiredT
2026-06-09 20:03:12
365
原创 手机 Chrome 远程调试实战:adb + DevTools,localhost 就是你的测试服
本文介绍了如何在Android手机上调试H5页面的完整方案。通过USB连接电脑后,使用adb工具进行端口映射,让手机直接访问本地开发服务器(如Vite),配合Chrome远程调试功能(chrome://inspect)实现实时代码修改、日志查看和性能分析。重点解决了Google Pay等必须在真机测试的场景,以及触摸事件、WebView适配等移动端特有问题的调试需求。文章还推荐使用scrcpy投屏工具辅助演示,并提供了从环境配置到实战场景的完整工作流,显著提升移动端开发调试效率。
2026-06-09 13:00:07
609
原创 Load 占用高排查实战:load 飙到 60,但 CPU 只有 70%,凶手到底藏在哪儿?
文章摘要: Linux系统的load average高但CPU使用率低,通常是因为大量进程卡在D状态(不可中断睡眠),等待磁盘I/O、网络或内核资源。排查时需区分三种场景:CPU密集型任务(us/sy高)、磁盘I/O等待(wa高)和D状态堆积(CPU闲置但load虚高)。关键命令包括vmstat(观察r/b/wa列)、ps(抓D状态进程)、iostat(磁盘I/O分析)和top(线程级诊断)。负载持续超过CPU核数的2倍即需紧急处理。决策树式排查路径能快速定位根因。
2026-06-08 21:32:03
386
原创 9 条数据查 11 秒:xxl-job 列表慢的索引救援实战
文章摘要: xxl-job后台在1800万数据的调度日志表中查询时出现性能问题,单次查询耗时11秒。分析发现原索引I_trigger_time效率低下,导致扫描30万行仅返回9条数据。问题根源在于现有索引未包含job_id字段,导致无法高效过滤。通过创建联合索引idx_job_id_trigger_time_codes(按job_id等值列优先,trigger_time范围列次之),并采用Online DDL方式(ALGORITHM=INPLACE LOCK=NONE)在180秒内完成索引添加,最终解决性能
2026-06-08 21:05:57
445
原创 事务回滚了消息却发出去:Spring 事务消息的 4 种姿势对比
事务回滚了消息却发出去——根因是业务事务与发消息不在同一原子边界,afterCompletion 不判 status 会导致回滚仍发消息。对比四种方案:@TransactionalEventListener(AFTER_COMMIT,首选)、手写 TransactionSynchronization、本地消息表、RocketMQ 事务消息,并给出按一致性与跨库需求选型的决策树。
2026-05-21 22:52:01
805
原创 @RemoteEvent 自动事件总线:1 个注解换 60 个 Consumer,赚还是亏?
一种 Spring + RocketMQ "自动事件总线"设计:业务 Bean 加 @RemoteEvent 注解,启动时自动创建独立 Consumer + Topic + Group。本文剖析发送侧用 ApplicationEventMulticaster 接管 Spring事件分发、消费侧扫描注解自动注册 Container 的双端实现,量化每个 Bean 至少新增 21 个线程的代价(60 Bean 项目 3950 线程的真实账单),给出 4个调优旋钮和按项目阶段分档的适用场景。设计没有银弹,只有取舍
2026-05-21 21:15:42
691
原创 从 MQ 积压追到事件总线:诊断 4K 线程吃光 7G 内存的实战
摘要:本文记录了一次由RocketMQ消息积压引发的系统故障排查过程。通过分析CPU、内存、线程等指标,发现系统存在3950个线程和频繁GC问题。排查发现线程数并非泄漏,而是系统设计导致,Netty线程缓存与线程数呈线性增长关系。同时发现Spring AOP切点匹配未缓存导致对象频繁创建。最终确认问题根源是系统架构设计而非代码缺陷,强调区分"设计选型"与"代码bug"的重要性。
2026-05-20 21:53:20
610
原创 Flink Jenkinsfile 怎么写不出 bug:10 条设计要点 + 完整 Demo
Flink CDC 流式作业有状态、异步、可同名并存,用普通服务的部署脚本会导致重启双开、数据重复。本文给出 Jenkinsfile 的 10 条设计要点:savepoint 优雅停止、REST API 轮询等终态而非 sleep、覆盖 7 个非终态过滤、启动前二次校验防双开、SSH heredoc 防引号嵌套、飞书通知三件套,并附一份约 408 行可直接抄用的完整 Demo。⚠️ 终态判断要用「不在非终态集合里」反推、别枚举,否则会漏 SUSPENDED 死等到超时。
2026-05-20 11:27:00
515
原创 Jenkinsfile 反模式图鉴:17 个把 CI/CD 流水线写崩的姿势
Jenkinsfile 十七大反模式图鉴,分四类:① 流水线骗自己(sleep N 等时间不等状态、break 取第一个、单态漏中间态、缺二次校验、构建不可复现);② 出事没人知道(失败不通知不 @ 人、日志无时间戳、清理把通知铲了、通知发了但没到、只报状态不报原因);③ 把 Jenkins 拖垮(poll 无上限、无界重试、input 占 executor、Groovy 跑在 controller);④ 写法本身是雷(硬编码路径、引号嵌套破裂、密钥插值裸奔)。配反例代码、真实双开事故与官方口径。
2026-05-19 18:05:43
428
原创 Flink 重启变双开:一次部署引发的两个 CDC 任务并发消费
Flink CDC(MySQL→ClickHouse)发版重启后,Dashboard 上两个同名任务并行 RUNNING、双写数据。Jenkins 明明有 stop 旧任务步骤却没停掉,翻代码挖出 4 个并发陷阱:状态过滤只匹配 RUNNING 漏掉 CANCELLING 等过渡态、break 只停第一个、flink stop 是异步命令返回≠任务真停、sleep 5 是侥幸。修复:覆盖 7 个非终态+循环停所有+poll 等真正终态+启动前二次校验。核心教训:异步系统的"等"要等状态,不要等时间。
2026-05-19 17:52:51
520
原创 内存占用高排查实战:从 free 到 MAT,揪出那个吃内存的家伙
凌晨被 OOM 告警叫醒?本文从 Linux 内存识别误区(看 available 而不是 free)讲起,用 top + /proc/PID/status 定位吃内存的进程;再深入 JVM 层,jstat 看 GC 趋势、jmap + MAT解剖堆转储、Arthas 在线诊断;最后归纳堆内泄漏、大对象、堆外内存、Metaspace 溢出、GC 参数不合理五大经典原因与解法。文末附完整排查 SOP速查表与一行命令快速摸底版——下次再被叫起,照着抄,少骂两句。
2026-05-18 21:36:47
650
原创 1800 行 INSERT 跑了 16 分钟:ClickHouse 并发洪流踩坑 + 多账号资源隔离方案
ClickHouse同步任务因并发写入导致性能瓶颈:一条1800行的INSERT耗时16分钟,排查发现并非SQL或硬件问题,而是大量并发小查询(每秒6条INSERT)占满线程池(8个slot)。通过分析ProfileEvents发现99.98%时间在等待线程,最终采用多账号+Settings Profile方案隔离写入负载,解决了"并发洪流"问题。
2026-05-18 11:53:57
605
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅