如果虚拟内存过低,请自动重新启动服务器

我的服务器上有相当多的软件运行:httpd,varnish,mysql,memcache,java ..

他们每个正在使用虚拟内存的一部分,并configuration清漆分配3GB的内存运行。

由于100K的高stream量负载,我们的服务器耗尽了内存,并且调用了杀手锏。 我们必须重新启动服务器。

我们有8GB的虚拟内存,由于某种原因,我们无法扩展到更大的内存。

我的问题是 – 是否有任何自动化的脚本,它会监视剩下多less虚拟内存,并根据一定的标准,可以说,如果500MB左侧比自动重启服务器?

我知道这不是正确的解决scheme,但我们必须这样做,否则我们不知道什么时候服务器将获得OOM,当我们知道并重新启动服务器时,我们失去了我们的访问用户。

如果我正确地理解你,你需要像下面这样的东西:

  1. 检查VPS上剩下多less内存。
  2. 如果剩下500M的内存,重启VPS。

这可以按照如下进行

  1. 编写一个脚本,检查剩余的内存并重新启动VPS
  2. 将此脚本添加到crontab以自动执行任务。

例如

#!/bin/bash mem=$(free -m | awk '/Mem:/{print $4}') (( mem <= 500 )) && reboot 

使脚本可执行

chmod +x scriptname //注意不要添加扩展名

将脚本添加到cron

crontab -e

 * * * * * user_to_run_the_script /path/to/the/script 

希望你明白了。

我有一个类似的问题,虽然不想质疑你的问题,这是好的和具体的,我不得不说,你需要一个长期的解决scheme。

OOM杀手因为您的服务器内存不足而开始启动。 closuresOOM杀手并不能解决这个问题 – 你仍然会失去内存,你的服务器最终会崩溃。 当然OOM杀手并不总是有帮助,但closures它也不会。

重新启动服务器将暂时解决问题,但会再次发生。

我有一个类似的问题与服务器 。 安装监控并configuration它以在内存用完时发出警告,允许我在出现问题时访问服务器,这样我就可以正确诊断并解决问题。 我还通过交换文件添加交换,以增加在问题发生时访问服务器的时间。

在我的情况下,我的networking服务器被configuration为启动太多备用服务器的服务器可以处理的负载。 一旦我找出问题的根本原因,我就解决了这个问题,而服务器从此也没有崩溃。