我在AWS上托管了一个VPS,该VPS使用httpd
运行PHP。通常,一段时间后,服务器(4GB RAM)已超载,并需要很长时间才能响应请求,但不会出现任何错误。重新启动httpd
可以解决此问题,但是由于它不会产生任何错误,因此forever
无法自动重新启动它。每当服务器内存低于特定数字时,如何写脚本以重新启动httpd sudo service httpd restart
?谢谢。
答案 0 :(得分:2)
这是一个没有真正好的答案的问题,因为首先您需要准确找出正在消耗所有RAM的东西。
我有几个VPS,其中一些内存只有2GB,正在运行CWP.Pro,防火墙,DNS和邮件服务器,而HTTPD在收到大量请求后仍然不会崩溃。
请考虑修复该问题。
如果您有Monit设置,为了回答您的问题,它可以做您想要的。它会监视您的服务,并在占用过多资源后停止它们,在不运行或出现问题时重新启动它们,等等。
以下摘录显示了使用它的人所说的话:
当您无法监视服务器的服务可用性时,最好寻求自动监视和重新启动实用程序的帮助。最近4天,我在享受假期的时候离开了服务器。在这段时间内,由于负载,我的lighttpd Web服务器死了,但是它在2分钟内自动重新启动。我配置了用于监视名为monit的Linux系统上的服务的实用程序。它提供了系统监视和对UNIX等系统执行错误恢复所需的所有功能。
总结一下,我在这里所说的就是安装和使用Monit的链接: Monit 3rd Party
以及官方网站: Official Site
答案 1 :(得分:1)
我从您的问题中猜测您正在使用Ubuntu / Debian兼容操作系统。
Linux上的free
命令为您提供系统的内存使用情况。因此,如果满足有关内存使用的任何条件,则可以使用free
和gawk
编写bash脚本(从输出中过滤掉必要的信息)以发出重新启动命令。
最后创建一个cron以定期运行您的脚本
答案 2 :(得分:0)
您可以编写一个cron,该cron每隔5s或您认为的任何间隔运行一次,并且确实为httpd重新启动。