如何追踪 ubuntu 中导致 postgres 占用 Amazon EC2 容器中 100% CPU 使用率的幽灵进程的来源?

如何追踪 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,但即使这样,那个幽灵进程仍在运行。我得到了问题的可能答案这里。但我需要知道哪个父进程正在启动此类幽灵子进程的执行?如果我使用 运行psPID我得到的结果PPID是 1。我需要知道运行这些子进程的受感染程序是什么?

我已经尝试运行manappros对于进程名,我尝试重置postgres用户密码以解决此问题,但没有效果。有没有办法找出是哪个受感染的程序导致了这种情况?或者如何在不格式化服务器的情况下处理这种情况?

答案1

很难不妥协服务器。最佳做法是:

  • 倾倒您的数据库(使用pg_dump),
  • 删除EC2 实例,
  • 创造新实例,
  • 重新安装postgres,以及
  • 重新加载数据。

课:永远不要让数据库服务器向外界开放。使用安全组将访问权限限制为实际需要访问的 IP。最好使用可以自动修补数据库以缓解安全问题的 AWS RDS。

相关内容