DB2內存使用過高問題分析


db2版本號為V9.7。

先說問題,如圖:

最近發現DB2數據庫占用內存達到10個G,前一段時間是7.2個G,在之前是4個多G。到底是什么占用了這么大的內存?以下是本人排查問題的步驟。

1、使用db2top對內存進行監控

 

發現數據庫緩存池占用內存很高

2、查看數據庫連接數

使用db2 list application進行查看,發現只有115個連接,並發並不高。

3、會不會是某個連接占用大量內存

停掉所有應用,對數據庫進行重啟。重啟后先不要啟動應用發現內存依舊占用這么高。說明跟前台應用沒有關系,同時也排除了內存泄露問題

4、查看數據庫配置文件

db2 get db cfg for <dbname> show detail

發現db2的內存都是自動管理的。

5、使用db2pd -db <dbname> -buff命令對緩沖池進行查看

可以看到IBMDEFAULTBP緩沖池數量非常的大,但是該緩沖池是自動管理的。

綜上所述,內存占用高原因分析:db2的內存是自動管理的,包括緩沖池。自動管理會按需分配內存,但是為什么內存只增長不釋放呢,個人感覺是因為空閑內存較多。當空閑內存較少時,db2會對內存進行釋放。

 

但是我數據庫的數據一共才4.8G,沒有必要配置這么大的緩沖池。那么如何手動調整呢?

執行db2 alter bufferpool IBMDEFAULTBP immediate size 100000(根據實際情況調整)命令

可以看到手工調整后緩沖池的數量變成了自己設置的數量,automatic變成了false;在用db2top查看會發現緩沖池內存值也相應發生了變化。

如何設置成自動調整呢?執行db2 alter bufferpool IBMDEFAULTBP immediate size 100000 automatic即可。

備注:在db2的內存中緩沖池內存的修改是即時生效的,不用重啟數據庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM