如果我从 Ubuntu 服务器释放交换内存,任何正在运行的进程都会被终止吗?

如果我从 Ubuntu 服务器释放交换内存,任何正在运行的进程都会被终止吗?

这个问题(这个问题的标题)出于以下原因进入了我的脑海。如果有人能给出该原因的解决方案,那么我就不需要释放交换内存了。

原因:

安装 Jenkins 后,它运行良好。但使用几分钟(或几小时)后,它会自动停止。当我重新启动服务(通过命令sudo service jenkins restart)时,它再次开始工作。同样,一段时间后它再次自动停止(即,我在目标 URL 中找不到 jenkins MY_IP_ADDERSS:8080),但每当我检查 jenkins 的状态(sudo service jenkins status)时,它都会显示active (exited)

我检查了我的服务器内存。RAM 内存大约有 20% 可用,但交换内存已满 100%。我猜问题出在交换内存上(我不知道我是对还是错)

如果有解决这个问题的方法,请先帮助我。

现在我的问题是:

如果我释放交换内存会出现什么问题吗?

如果我尝试这样做,正在运行的进程(或其中的任何进程)会被终止吗?

请帮忙,这是我在这个网站上的第一个问题。

答案1

当内存压力大时,会使用分页空间(又称交换空间)。由于永久存储比 DRAM 慢得多,因此过度分页对大多数工作负载来说性能不佳。如果 RAM + 分页空间完全用完,则 Linux 上的 OOM 终止程序将尝试查找分配繁重的任务并将其终止。另一种方法是崩溃并重新启动。

可以接受较慢的页面调出速度。但是,您的进程莫名其妙地死亡了。此外,Linux 内存管理不会将页面空间填充到 100%,也不会将 RAM 填充到 80%,某些东西会回收大量内存。通过终止任务;如果您查看日志文件,就会找到 OOM 终止程序。

OOM killer 是容量规划流程失败的症状。解决方案如下:

  • 减少应用程序的内存消耗。例如,减少数据库的共享内存,或减少运行时的堆(JVM)。
  • 增加分配给主机的 RAM。DRAM 相对便宜,而且比固态存储器更快。

答案2

毕竟我已经找到了解决这个问题的方法。

扩展交换内存后,我的 Jenkins 运行良好!

相关内容