活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 池采样时间(UTC)。 |
| service | Utf8 | 拥有该池的应用程序服务。 |
| pool_name | Utf8 | 稳定的逻辑池名称。 |
| active_connections | Int64 | 当前已检查连接。 |
| idle_connections | Int64 | 打开当前空闲的连接。 |
| max_connections | Int64 | 配置的最大池大小。 |
| wait_ms | Float64 | 观察到此示例的连接获取等待。 |
| timed_out | Boolean | 获取是否超过客户端超时时间。 |
| environment | Utf8 | 部署环境。 |
DataFusion SQL
复制查询
sql
SELECT
service,
pool_name,
COUNT(*) AS samples,
100.0 * AVG(active_connections)
/ NULLIF(MAX(max_connections), 0) AS average_utilization_pct,
SUM(CASE WHEN wait_ms > 0 THEN 1 ELSE 0 END) AS waited_samples,
100.0 * SUM(CASE WHEN wait_ms > 0 THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS wait_rate_pct,
AVG(wait_ms) AS average_wait_ms,
SUM(CASE WHEN timed_out THEN 1 ELSE 0 END) AS timeouts
FROM database_pool_samples
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY service, pool_name
HAVING COUNT(*) >= 10
ORDER BY wait_rate_pct DESC, average_utilization_pct DESC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
连接获取等待率
结账呼叫者在三分之二的样本中等待,并且还会遇到采集超时。
checkout-api
66.67%
comparison 89.17%
analytics-api
33.33%
comparison 45%
| service | pool_name | samples | average_utilization_pct | waited_samples | wait_rate_pct | average_wait_ms | timeouts |
|---|---|---|---|---|---|---|---|
| checkout-api | primary | 12 | 89.17 | 8 | 66.67 | 118.75 | 2 |
| analytics-api | reporting | 12 | 45 | 4 | 33.33 | 12.5 | 0 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1平均利用率提供了容量背景,但不能单独用作故障信号。
- 2等待采样率显示即使等待时间很短,调用者也会遇到争用的频率。
- 3超时仍然是明确的,因为平均值可以隐藏一小部分从不获取连接的请求。
需要决定的边缘情况
- 在比较不同服务的费率之前,采样频率必须保持稳定。
- Serverless并发可以创建很多独立的池;当聚合会隐藏该形状时,包括实例或运行时维度。
- 增加池大小可以将争用转移到数据库中。在更改客户端限制之前检查数据库容量。
推荐仪表板
- 酒吧:wait_rate_pct 和 average_utilization_pct(按服务)
- 趋势:活动、空闲和等待连接
- 统计:连接获取超时
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。