
例如写入时报错NetException: I/O error: Broken pipe, while writing to socket报错原因节点异常或集群整体高负载分布式查询/写入到某个分片节点时对端节点过载或崩溃 导致 连接被 reset排查 Insert 失败异常的监控/诊断查询统计 今天today()在所有副本上 执行失败type in (3,4)的 Insert 查询按「异常码 异常信息前 100 字符」分组统计每种异常的出现次数便于快速定位是哪类写入错误在频发select count() as cnt,exception_code,substr(exception,1,100) as exfrom clusterAllReplicas(default_cluster,system.query_log)where event_date today()and query_kind Insertand type in(3,4)and is_initial_query 1group by exception_codeorder by cnt desclimit 20,sql解析select count(), -- 每种异常出现的次数count() 等价于 count(*)ClickHouse 合法语法exception_code, -- 异常码如 60/241 等substr(exception,1,100) as ex -- 异常信息前100字符便于肉眼识别错误group by exception_code, substr(exception,1,100)where event_date today() -- 仅今天query_log 分区键利于裁剪分区and query_kind Insert -- 只看写入类查询and type in (3,4) -- 只看异常类型and is_initial_query 1 -- 只统计客户端发起的初始查询排除内部子查询备注clusterAllReplicas 会在集群 default_cluster 的每个分片的所有副本上执行子查询并汇总结果区别于 cluster() 只在每个分片取一个副本适合查 query_log 这类本地表保证不漏数据可以判断是初始化写入还是子写入时报的这个错误或者用这个sql查询失败时间段执行的sql是哪些 异常原因SELECT event_time, query_id, user, query, exception_code, exceptionFROM clusterAllReplicas(default_cluster, system.query_log)WHERE type IN (ExceptionWhileProcessing,ExceptionBeforeStart)AND event_time BETWEEN 2026-09-02 11:15:00 AND 2026-09-02 11:20:00ORDER BY event_time DESCLIMIT 50;event_time 事件发生时间查询结束/异常时间query_id 查询的唯一 ID可用于关联前后端日志user 发起查询的用户账号query 出问题的完整 SQL 文本exception_code ClickHouse 异常错误码如 241内存超限、60表不存在等exception 异常的具体错误信息英文描述含关键提示type的类型QueryStart 查询开始执行的日志行正常的QueryFinish 查询正常执行完成的日志行正常的ExceptionBeforeStart 查询执行前就失败异常的ExceptionWhileProcessing 查询执行中失败异常的