openGauss資料庫分析問題
方法一 檢視日誌
檢視資料庫日誌ERROR級別以上日誌
1.先查詢資料目錄的位置,可透過ps f -u om bm檢視資料目錄,或者gs_om -t status --detail檢視資料目錄
比如資料目錄為/var/lib/opengauss/data
2.再查詢資料庫日誌目錄
cat /var/lib/opengauss/data/postgresql.conf|grep log_directory
例如預設日誌目錄為
log_directory = 'pg_log'
3.從日誌目錄過濾ERROR級別以上日誌
如果日誌檔名是按yyyy-mm-dd,則可只檢視當天的日誌
cat /var/lib/opengauss/data/pg_log/postgresql-2021-04-08*.log |grep -E 'ERROR|PANIC' |more
方法二 綜合診斷
1.先排查常見問題
1.1 檢視叢集的狀態是否都為normal正常狀態(是否有異常節點,比如同步節點掛了等)
gs_om -t status --detail
1.2 檢視流複製延遲(是否有網路問題)
或者進入主庫檢視系統檢視pg_stat_replication的檢視sender_sent_location傳送端傳送日誌位置與receiver_*_location接收端日誌是否有延遲
select * from pg_stat_replication ;
1.3 WAL及歸檔狀態檔案及磁碟空間檢查
1.4 檢視連線狀態,是否有長事務,活躍連線數佔比
select state,count(1) from pg_stat_activity group by 1;
2.檢視系統資源使用情況
2.1 使用top命令檢視各節點cpu使用情況
按“1”鍵,可檢視每個CPU核的使用率,可分別在每個節點依次檢視,判斷是主節點讀寫還是從節點讀壓力大。
主要關注cpu使用率。
2.2 使用top -H -p pid查詢omm使用者程式內佔用cpu百分比比較高的執行緒
pid可透過ps f -u omm檢視程式獲取
2.3 系統級的時間消耗細分。判斷是否整個系統是否存在負載,網路,IO,CPU上的瓶頸
select stat_name,value/1000 as "val(ms)" from dbe_perf.instance_time order by 2 desc;
2.4 系統級記憶體
select memorytype as type,memorymbytes as "val(MB)" from dbe_perf.memory_node_detail where memorymbytes>0;
2.5 共享記憶體使用率
select contextname ,parent,totalsize,freesize,usedsize
from dbe_perf.shared_memory_detail
where level=1 and totalsize>0 order by usedsize/totalsize desc;
2.6 系統級session
postgres=# \dv dbe_perf.session*
List of relations
Schema | Name | Type | Owner | Storage
----------+------------------------+------+-------+---------
dbe_perf | session_cpu_runtime | view | omm |
dbe_perf | session_memory | view | omm |
dbe_perf | session_memory_detail | view | omm |
dbe_perf | session_memory_runtime | view | omm |
dbe_perf | session_stat | view | omm |
dbe_perf | session_stat_activity | view | omm |
dbe_perf | session_time | view | omm |
(7 rows)
透過上面一些session級檢視可分析如下資訊
1. 會話級負載強度,邏輯/物理讀寫強度,排序活動等,用於甄別出負載強度高,使用資源多的會話
2. 會話級時間細分,用於甄別出不同時間維度上session的消耗
3. 會話級總記憶體和記憶體上下文分配/使用,可以定位單個session在特性級上的記憶體問題
4. 獲取實時系統活躍會話列表,包括會話基本資訊,會話事務,語句,等待事件,會話狀態(active,idle等),
用於分析當前系統活躍使用者的活動資訊,比如從語句的開始時間判斷當前會話是否一致阻塞在某一個語句,
從等待事件可以判斷某一個或者多數會話阻塞在哪個事件或者節點(分散式場景)
方式三 根據報錯資訊定位原始碼
1.進入opengauss-server原始碼目錄
cd /opt/openGauss-server/src
2.根據報錯資訊關鍵字進行搜尋
grep -r "Instance reset time is different" -w --include="*.cpp"
搜尋結果如下
gausskernel/cbb/instruments/wdr/generate_report.cpp: ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("Instance reset time is different")));
3.再根據原始碼去分析問題
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2893477/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- openGauss資料庫xlog目錄滿問題處理資料庫
- 資料庫索引分裂 問題分析資料庫索引
- 資料庫週刊59丨GaussDB(for openGauss)開放商用;MDL鎖導致的MySQL問題分析……資料庫MySql
- 資料庫Server效能問題分析案例一資料庫Server
- openGauss核心分析(九):資料庫表的建立過程資料庫
- 資料庫突然當機的問題及分析資料庫
- 深度分析資料庫的熱點塊問題資料庫
- openGauss 分散式資料庫能力分散式資料庫
- 深度分析資料庫的熱點塊問題(轉)資料庫
- 分析發生在過去的資料庫效能問題資料庫
- 一次資料庫當機問題的分析資料庫
- 深度分析資料庫的熱點塊問題 (zt)資料庫
- 資料庫同步問題資料庫
- openGauss核心分析(十):資料庫搜尋引的建立過程資料庫
- openGauss 設定資料庫審計資料庫
- SQL Server資料庫記憶體增加的問題分析SQLServer資料庫記憶體
- 資料庫常見問題資料庫
- 資料庫被鎖問題資料庫
- jbuilder 與資料庫問題UI資料庫
- 資料庫中文問題,急資料庫
- jbuilder資料庫中文問題UI資料庫
- 配置資料庫問題?求救資料庫
- 資料庫關聯問題資料庫
- 資料庫同步更新問題?資料庫
- 資料庫問題求證資料庫
- sybase iq 資料庫 問題資料庫
- 資料庫併發問題資料庫
- Domino 資料庫超大問題資料庫
- 資料庫欄位問題資料庫
- 資料庫啟動問題資料庫
- jboss訪問資料庫的問題資料庫
- 從業務角度分析奇怪的資料庫高負載問題資料庫負載
- Oracle技術支援是如何分析資料庫效能問題的Oracle資料庫
- openGauss資料庫日誌管理指導資料庫
- 安裝資料庫和資料庫解決問題資料庫
- openGauss資料庫原始碼解析系列文章--openGauss簡介(一)資料庫原始碼
- openGauss資料庫原始碼解析系列文章——openGauss簡介(三)資料庫原始碼
- openGauss資料庫原始碼解析系列文章——openGauss簡介(二)資料庫原始碼