IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    如何判断服务异常退出

    ydzhang发表于 2014-10-19 07:48:55
    love 0

    问题背景

    一个服务需要往磁盘持久化数据,但不是每次写的同步刷盘,而是依赖于操作系统的后台线程异步刷盘,如果遇到机器宕机等异常情况,可能导致服务的数据丢失或处于不一致状态,所以需要在每次机器宕机后对服务的数据进行检查,保证数据完整性。

    实现方案

    服务退出时,记录下退出状态,下次启动时根据上次的退出状态来判断是否异常退出。具体实现方案有很多,比如:

    • 在服务启动时,创建文件/service_home_dir/running;
    • 在服务正常退出时,删除文件/service_home_dir/running;
    • 服务启动时,如果/service_home_dir/running文件已经存在,说明服务上次异常退出。

    上述方案非常简单,要求服务能捕获kill信号,在收到kill信号或主动正常退出时,删除文件/service_home_dir/running,能识别出的异常场景包括:

    • 服务运行时被kill -9干掉
    • 服务运行时coredump
    • 服务运行时机器宕机

    The post 如何判断服务异常退出 appeared first on Yun Notes.



沪ICP备19023445号-2号
友情链接