用途:ClickHouse 没有 SaaS 式 REST API 限流,而是在服务端通过并发上限、内存配额和用户级设置控制资源。本技能用于配置这些服务端限制,并配合客户端控制,使应用在高负载下不超限。
主要能力:调整常用服务端设置,如 max_concurrent_queries(默认 100)、max_connections(默认 4096)、max_memory_usage(约 10GB)、max_execution_time(默认 0 不限);为应用用户绑定配额与设置配置文件,限制单查询内存、超时和每用户并发;提供客户端连接池、并发队列(p-queue)、针对 TOO_MANY_SIMULTANEOUS_QUERIES 的退避重试、插入缓冲等模式;提供监控查询以查看当前并发、队列深度和历史峰值。
使用方式:需 ClickHouse 管理员权限或 Cloud 控制台,以及 @clickhouse/client Node 包。先设定服务端上限,再让客户端遵守。示例:CREATE SETTINGS PROFILE IF NOT EXISTS app_profile SETTINGS max_memory_usage = 5000000000, max_execution_time = 30, max_concurrent_queries_for_user = 10 TO app_user; 客户端可用 p-queue 限制并发,如 new PQueue({ concurrency: 5, timeout: 30_000, throwOnTimeout: true })。
适用场景:并发用户管理、报表服务限流、突发并发削峰、高吞吐写入避免 TOO_MANY_PARTS。
限制与错误处理:常见错误码 202(并发过多)、241(内存超限)、159(超时)、252(分区过多),需降低并发、优化查询或批量插入。ClickHouse Cloud 管理 API 另有 10 请求/10 秒限制。完整代码与监控查询见 references/implementation.md 和 references/examples.md。安全加固与查询性能优化分别见其他技能。