Ubuntu
如何在 ubuntu 中跟踪導致 postgres 在 Amazon EC2 容器中佔用 100% CPU 使用率的幽靈程序的來源?
我在 AWS EC2 微實例上執行 PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1)。以前,我允許從任何地方遠端連接到 postgres db。幾天后,我看到
postgres
使用者執行的未知程序佔用了 100% 的 CPU 使用率。執行top
命令給出類似的輸出。8092 postgres 20 0 302872 266776 0 S 99.3 26.5 2574:21 WI0oUt
沒有在後台長時間執行的活動查詢。我停止了 postgres DB,即使那個幽靈程序正在執行。我在這裡得到了問題的可能答案。但是我需要知道哪個父程序開始執行這些幽靈子程序?如果我使用 執行
ps
,PID
我得到PPID
1。我需要知道執行這些子程序的受感染程序是什麼?我已經嘗試執行
man
,appros
對於程序名,我嘗試重置postgres
使用者密碼以解決妥協,但沒有效果。無論如何要找出是哪個受感染的程序導致了這種情況?或者如何在不格式化伺服器的情況下處理這種情況?
對伺服器不妥協是非常困難的。最好的選擇是:
- 轉儲您的數據庫(使用
pg_dump
),- 刪除EC2 實例,
- 創建新實例,
- 重新安裝postgres,和
- 重新載入數據。
**教訓:**永遠不要讓數據庫伺服器對世界開放。使用安全組將訪問限制為僅對實際需要訪問的 IP 進行。理想情況下,使用 AWS RDS 可以自動修補您的數據庫以緩解安全問題。