服务的高可用性

时间:2013-06-20 20:09:35

标签: java linux

我想在linux中监控几个服务。如果它们发生故障我想重新启动它们。

我正在编写一个crontab,它将每隔60秒使用jps命令获取服务的名称,如果它们不在结果集中,则发出特定于每个服务的重启命令。

我希望这些服务始终可用,以防它们发生故障,我可以让它们重新启动并运行。

我很担心,如果这些服务中的任何一个挂起,我怎么知道。有没有办法了解挂起服务并杀死它们?

是否有一种干净的方式来实现服务的自动重启,这将同时处理“停机服务”和“挂断服务”。

由于

3 个答案:

答案 0 :(得分:1)

我建议,假设可以使用网络查询这些服务,您通过localhost调用服务,如果超时,则使用killall或pkill命令终止它们并重新启动它们。

很抱歉没有解释很多,我希望它看起来非常简单......

答案 1 :(得分:1)

  

有没有办法了解挂起服务并杀死它们?

告诉任意过程是否已经挂起是非常重要的。你可以检查几件事:

  • 是否响应网络请求 - 尝试curl或以其他方式发送影响较小的测试请求。
  • 是否记录到磁盘 - 检查日志文件的上次更新时间,如果它早于X,则将其终止。

在一般情况下,它是无法解决的,但这些是大多数流程可以检查的常见指针。

答案 2 :(得分:0)

或许service --status-all可以提供帮助吗?只需grep输出并搜索[+],表示它已启动。

实际上,没必要那样做。只需致电service 'service_name' status