Postgresql

確定 PostgreSQL 伺服器的查詢負載是否過高

  • January 15, 2020

我剛開始在 Ubuntu 18.04 伺服器上的 Docker 容器內執行的 PostgreSQL 11.2 系統上遇到一些寫入繁重的負載。PostgreSQL 每秒接收大約 1-4k INSERT 查詢。

如何確定這個負載量對於系統來說是否太高?是否有一些指標需要監控,比如顯示任何時候排隊的查詢數量?


系統規格

  • 英特爾® 凌動™ C2750(8 核,2.4GHz)
  • 8GB DDR3
  • 240 GB 固態硬碟

的輸出htop

2 個 node.js 應用程序同時向 PostgreSQL 發送查詢。應用程序和數據庫都在同一台伺服器上執行。

在此處輸入圖像描述

的輸出iotop

在此處輸入圖像描述

的輸出iostat -c 5 999

在此處輸入圖像描述

的輸出vmstat 1

在此處輸入圖像描述

pgAdmin

在此處輸入圖像描述

除非您有執行複雜操作的插入觸發器,否則INSERT可能會受到 CPU 或 I/O 的瓶頸。

用於vmstat 1確定是什麼情況:CPU 使用率明顯高,I/O 負載高表現為iowait%10 或更高。這假設您沒有在容器上設置 CPU 或 I/O 限制。

如果這兩個值看起來都不錯,那麼您可能還沒有達到極限。

對於現代伺服器硬體來說,這並不是一個可怕的負載。

在寫入繁重的數據庫上,它將依賴於必須處理/檢查的硬碟層、觸發器、函式、索引和約束。

獲取所需資訊的一種簡單方法是安裝 pgAdmin,然後使用儀表板查看發生了什麼。連接數、每秒事務數、進出元組

從那裡需要使用某種系統監視器來研究系統負載,我喜歡掃視,這將獲得有關 CPU、網路和高畫質負載的資訊,

如果 CPU 或 HD 上的等待時間很長,可以調整 postgresql.conf 中的日誌設置以記錄哪些查詢花費的時間超過 X 時間

引用自:https://dba.stackexchange.com/questions/257467