成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PG AWR工具推介說明

IT那活兒 / 665人閱讀
PG AWR工具推介說明

最近上線了一套PG,在日常運維的過程中發(fā)現(xiàn)了一個小問題。當(dāng)我們知道某個時間點CPU達到80%的,想分析一下此時間段系統(tǒng)出于什么問題會異常,往往缺乏手段。在Oracle中,我們可以通過AWR報告來發(fā)現(xiàn)問題。聽說PG也有類似AWR的工具,于是我們開始了找工具之旅。


pg_profile,這款工具是個戰(zhàn)斗民族寫的。我們之所以選擇這款工具是因為它足夠簡單,和OracleAWR報告工作方式很像。而且它最大的優(yōu)點是用純粹pl/pgsql編寫,勿需使用任何外部庫或者軟件。


接下來我們看下怎么安裝和配置pg_profile,并通過報告分析問題。


一、數(shù)據(jù)庫配置

首先需要配置數(shù)據(jù)庫相關(guān)StatisticsCollector參數(shù),具體配置參數(shù)如下:

track_activities = on

track_counts = on

track_io_timing = on

track_functions = all/p1


這四個參數(shù)建議打開,不然使用會有一些影響。其中track_activities和track_counts默認是打開的。track_activities允許監(jiān)控當(dāng)前被任意服務(wù)器進程執(zhí)行的命令。track_counts控制是否收集關(guān)于表和索引訪問的統(tǒng)計信息。track_io_timing啟用對塊讀寫次數(shù)的監(jiān)控。參數(shù)track_functions啟用對用戶定義函數(shù)使用的跟蹤。


打開上述4個參數(shù)之后,還需要配置pg_stat_statements

pg_stat_statements.max是跟蹤語句的最大數(shù)目(即pg_stat_statements視圖中行的最大數(shù)量)。如果語句超過這個數(shù)量,最少被執(zhí)行的語句的信息將會被丟棄。作者說此參數(shù)的設(shè)置太低可能會導(dǎo)致在抽取樣本之前會清除某些語句的統(tǒng)計信息。建議設(shè)置大一些。當(dāng)前參數(shù)我們設(shè)置的50000,足夠使用。


pg_stat_statements.track指定top可以跟蹤頂層語句(直接由客戶端發(fā)出的語句),指定all還可以跟蹤嵌套的語句(例如在函數(shù)中調(diào)用的語句),指定none則禁用語句統(tǒng)計信息收集。默認值是top。如果你設(shè)置的是all,作者說可能會影響報告中%Totalfields字段的精確值。


上面參數(shù)修改稍為簡單,因為基本上都是默認打開的。只有少數(shù)沒開,打開也不需要重啟。


二、下載安裝pg_profile


1.下載安裝文件上傳到服務(wù)器。

在服務(wù)器解壓文件,并存放到PG安裝目錄的extension文件夾下

tar xzf pg_profile-.tar.gz --directory $(pg_config --sharedir)/extension


2.安裝擴展

這里有兩種方式安裝,一種是公共模式安裝,這種安裝方式最簡單。第二種是獨立Schema安裝,這種安裝將在自己創(chuàng)建的Schema中建自己的表,視圖,序列和函數(shù),可以和其他用戶有效的進行隔離。我選擇了第二種安裝方式。

postgres=# CREATE EXTENSION dblink;

postgres=# CREATE EXTENSIONpg_stat_statements;

postgres=# CREATE SCHEMA profile;

postgres=# CREATE EXTENSION pg_profileSCHEMA profile;


默認pg_profile需要使用dblink和pg_stat_statements擴展包,這兩個屬于系統(tǒng)自帶插件,可選插件是pg_stat_kcache

還可以安裝pg_stat_kcache數(shù)據(jù),提供有關(guān)語句CPU使用率和文件系統(tǒng)負載的信息,因為是生產(chǎn)環(huán)境,我這里沒有多帶帶編譯安裝這個插件。


三、創(chuàng)建快照和生產(chǎn)報告

接下來我們可以執(zhí)行函數(shù)創(chuàng)建快照。

postgres=# SELECT profile.snapshot();

snapshot      

------------------------

(local,OK,00:00:01.08)


執(zhí)行完成之后,可以通過profile.show_samples()函數(shù),查看生成的快照。

postgres=# select profile.show_samples();

show_samples          

---------------------------------

(1,"2020-10-15 16:46:37+08",,,)

(2,"2020-10-15 16:47:12+08",,,)

(3,"2020-10-15 16:47:24+08",,,)

(4,"2020-10-15 17:11:43+08",,,)

(5,"2020-10-15 17:16:26+08",,,)

(6,"2020-10-15 17:32:27+08",,,)

(7,"2020-10-15 17:57:29+08",,,)

(8,"2020-10-16 10:40:17+08",,,)

(9,"2020-10-16 11:00:55+08",,,)

(9 rows)


當(dāng)前總共有9個快照,執(zhí)行profile.get_report命令,取2個時間段就可以生成AWR報告了。如果要生產(chǎn)對比報告,可以執(zhí)行profile.get_diffreport命令。

psql -qtc "select profile.get_report(8,9)"  --output awr_report_postgres_8_9.html


如果要每半個小時生成快照,需要把腳本放在contab下執(zhí)行。

*/30 * * * *  psql -c SELECT profile.snapshot() > /tmp/pg_awr.log  2>&1


四、瀏覽報告

報告輸出如下所示,這里我修改了一下存儲過程,稍微把標題改動了一下。大家有興趣也可以自行修改想要的標題還有樣式。



報告總共有6個部分:


第一部分是服務(wù)器統(tǒng)計。包含了數(shù)據(jù)庫在此快照期間的統(tǒng)計信息,例如事務(wù)數(shù)、內(nèi)存命中率、元組的操作統(tǒng)計等、數(shù)據(jù)庫的調(diào)用次數(shù)等、數(shù)據(jù)庫聚簇的統(tǒng)計信息,表空間的增長等等。



第二部分是我們熟悉的TopSQL。包括了執(zhí)行時長、執(zhí)行次數(shù)、執(zhí)行消耗I/O、執(zhí)行消耗的邏輯讀等topN的排序,還包含了完整的SQL語句。


第三部分是Schema的對象信息。包含了Top對象的信息,類似于OracleAWR報告的segmentstatistics部分,從這里我們可以輕松定位DML最頻繁的表、增長最快的表等等。


第四部分是用戶函數(shù)統(tǒng)計。可以看到我們自建的to_char使用次數(shù)最多。


第五部分是Vacuum相關(guān)統(tǒng)計


第六部分是報告快照期間的參數(shù)設(shè)置


五、如何定制自己想要的指標

pg_profile的介紹就到這里,相對于Oracle的awr報告還是有一定的差距的。但是好在開源軟件可以自行進行增強。當(dāng)前執(zhí)行快照的函數(shù)是take_sample(),當(dāng)執(zhí)行該函數(shù)的時候,會采集相關(guān)信息存入我們創(chuàng)建的schema的相關(guān)表中,如下圖所示:


如果要增加新的指標,只需要創(chuàng)建相關(guān)表,增加與之相關(guān)的insert語句采集就可以了。

而get_report函數(shù),則是生成html報告的函數(shù),在這里需要把我們新增的一些指標給顯示出來。


參考文檔:

http://postgres.cn/docs/12/monitoring-stats.html

http://postgres.cn/docs/12/pgstatstatements.html

https://github.com/zubkov-andrei/pg_profile

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130109.html

相關(guān)文章

  • PG的兩種集群技術(shù):Pgpool-II與Postgres-XL

    摘要:最近研究了的兩種集群方案,分別是和,在這里總結(jié)一下二者的機制結(jié)構(gòu)優(yōu)劣測試結(jié)果等。其中的前身的,的前身是。為了避免單點故障,可以為所有節(jié)點配置對應(yīng)的節(jié)點。測試測試結(jié)果測試結(jié)果顯示,兩種集群與單機的性能指標幾乎一致,無法分辨高下。 最近研究了PG的兩種集群方案,分別是Pgpool-II和Postgres-XL,在這里總結(jié)一下二者的機制、結(jié)構(gòu)、優(yōu)劣、測試結(jié)果等。 1、 Pgpool-I...

    gitmilk 評論0 收藏0
  • Postgres-XL安裝與配置

    摘要:接上篇初識寫一下簡稱的部署與測試。如果執(zhí)行報錯則根據(jù)提示安裝相應(yīng)的庫即可,如等。默認的安裝目錄是,和原生相同,很順手。 接上篇《初識Postgres-XL》https://segmentfault.com/a/11...寫一下Postgres-XL(簡稱PGXL)的部署與測試。 第一節(jié) 安裝安裝很簡單,源碼安裝,和PG的安裝基本相同,可能比PG多一個依賴庫。在所有節(jié)點上執(zhí)行相同操作。 ...

    ysl_unh 評論0 收藏0
  • 程序員筆記|循序漸進解讀Oracle AWR性能分析報告

    摘要:表示用戶操作花費的時間,包括時間和等待事件。當(dāng)內(nèi)存中排序空間不足時,使用臨時表空間進行排序,這個是內(nèi)存排序?qū)偱判虻陌俜直?。過低說明有大量排序在臨時表空間進行。要確保,否則存在嚴重的性能問題,比如綁定等會影響該參數(shù)。 Oracle中的AWR,全稱為Automatic Workload Repository,自動負載信息庫。它收集關(guān)于特定數(shù)據(jù)庫的操作統(tǒng)計信息和其他統(tǒng)計信息,Oracle以...

    honhon 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<