活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| 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(按服務)
- 趨勢:活動、空閒和等待連線
- 統計:連線獲取超時
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。