如果內存利用率很高,那么首先應該確認哪個進程產生了內存消耗。
使用linux的top工具
找出哪些或哪個進程消耗了大量的內存。然后再檢查進程在執行什么操作!
結合postgresql和系統的日志
比如,如果內存不夠,可能會發現類似日志信息:
Resource temporarily unavailable Out of memory: Kill process 1161 (postgres) score 366 or sacrifice child
或者可能會發現死鎖的信息:
FATAL: password authentication failed for user "username" ERROR: duplicate key value violates unique constraint "sbtest21_pkey" ERROR: deadlock detected
使用pg_top
如果知道PostgreSQL進程有很高的內存利用率,但是日志沒有幫助,那么可以使用另一個工具pg_top。這個工具類似於linux工具,但它是專門為PostgreSQL而設計的。因此,使用它,將獲得關於運行數據庫的內容的更詳細信息,甚至可以終止查詢,或者在檢測到某些錯誤時運行explain作業。
但是,如果無法檢測到任何錯誤,並且數據庫仍然使用大量RAM,會發生什么情況呢?
可能需要檢查數據庫配置。