如何查看CockroachDB集群的磁盘带宽消耗及写入来源?
查看CockroachDB集群节点磁盘带宽消耗及写入来源
一、查看各节点磁盘带宽消耗
1. 利用CockroachDB内置监控指标
CockroachDB内置了完整的IO监控指标,可通过以下方式获取:
- 直接访问节点的监控端口(默认8080),在Metrics页面搜索
disk_io_write_bytes_total(累计写入字节)和disk_io_read_bytes_total(累计读取字节),通过计算指标的每秒变化量得到实时带宽。 - 执行
cockroach debug zip导出节点的监控数据,解压后通过PromQL查询或可视化工具分析带宽趋势。
2. 系统级工具直接观测
通过操作系统工具可以直接查看进程级或磁盘级的带宽消耗:
- iostat:执行
iostat -x 1,查看输出中rMB/s(读带宽)和wMB/s(写带宽)列,结合CockroachDB数据目录的挂载点定位目标磁盘。 - iotop:执行
iotop -oP,过滤出cockroach进程,实时查看该进程的读写带宽。 - dstat:执行
dstat -d,简洁展示系统所有磁盘的实时读写带宽。
二、查看磁盘写入的来源信息
1. 通过内置指标区分写入类型
CockroachDB将写入按来源拆分了细分指标,可直接通过监控或cockroach node metrics命令查看:
sql_write_bytes_total:SQL语句(如INSERT/UPDATE)产生的写入raft_write_bytes_total:Raft复制协议同步数据产生的写入background_jobs_write_bytes_total:后台任务(如GC、自动统计更新)产生的写入storage_write_bytes_total:存储层总写入(包含上述所有类型)
对比这些指标的占比,就能快速判断主要写入来源。
2. 分析节点日志定位写入场景
启用调试级日志(启动CockroachDB时添加--v=2参数),日志会记录写入相关的上下文信息:
- SQL写入会伴随
executor模块的日志条目 - Raft复制写入会有
raft模块的日志 - 后台任务写入会包含
jobs或gc相关关键字
可通过grep过滤日志,例如:grep -E "(write|raft|gc)" cockroach.log,结合时间戳和模块信息分析写入来源。
3. 利用Profile工具定位写入热点
执行cockroach profile io <节点地址>:26257生成IO profile文件,使用pprof工具分析该文件,能定位到产生大量写入的代码路径,进而明确写入来源(比如是SQL执行还是Raft同步)。
内容的提问来源于stack exchange,提问作者Jackson
相关产品推荐
相关产品推荐

