zoukankan      html  css  js  c++  java
  • 如何让Java应用成为杀不死的小强?(上篇)

    各位坐稳扶好,我们要开车了。不过在开车之前,我们还是例行回顾一下上期分享的要点。

    项庄舞剑意在沛公,而咱们上期主要借助应用服务器 Resin 的源码,体验了一次 JMX 的真实应用。鉴于 9012 年的很多攻城狮从未接触过 Resin 应用服务器,咱们也没有挖的太深,点到为止。

    今天我们说些什么?先抛个问题:“如何实现 Java 应用进程的状态监控,如果被监控的进程 down 掉,是否有机制能启动起来?”

    640?wx_fmt=jpeg

    你或许对问题本身还有点不解,暂不针对问题本身进行作答,先不妨一起体验体验 Resin 应用服务器背后一个有意思的事情。

    打开控制台,输入命令 ./resin.sh start 启动 Resin 应用服务器,通过源码启动也未尝不可。启动完毕后,在控制台输入 jps 命令,会发现一些不可告人的秘密。

    10597 WatchdogManager
    
    10599 Resin
    

    后台居然启动了两个 Java 进程,先不关心都是干啥用的,我们不妨尝试把 Resin 进程给干掉,先执行 kill -9 10599 命令,然后再次执行  jps 命令,看看效果。

    10597 WatchdogManager
    
    10708 Resin
    

    哎呦,确实有些不可思议,Resin 进程又自动起来了,而且进程 ID 变成了 10708。

    难道是我们操作有误?那再重新杀一下 Resin 进程,执行 kill -9 10708 命令,然后再执行 jps 命令,确认一下是不是我们操作失误导致的。

    10597 WatchdogManager
    
    10765 Resin
    

    天啦撸,Resin 进程 ID 变成了 10765,而且又自动启来啦。

    不得不说 Resin 进程真是一个杀不死的小强,面对这种咱们啥也没有做,怎么杀 Resin 应用进程都杀不死,你是否会有好奇,这背后是咋回事?

    此时我们再杀一下 WatchdogManager 进程,执行一下  kill -9 10597 命令,然后再执行 jps  命令。

    640?wx_fmt=png

    发现 WatchdogManager 进程以及 Resin 的进程全部都消失不见,貌似还真有点意思,但是这背后到底隐藏了什么秘密呢?到底又是怎么做到的呢?

    如果这个时候咱们直接钻进 Resin 的源码,你可能会直接疯掉,我们还是先从效果上大胆的去猜一猜。

    猜想一:WatchdogManager 进程咱们姑且就认为是掌管丫鬟的大总管,而 Resin 进程相当于 丫鬟,大总管负责下发命令让丫鬟去干活,一旦丫鬟进程 down 掉,大总管进程就下发命令重新启动把丫鬟进程启动起来;

    猜想二:如果 WatchdogManager 大总管 down 了,那么被看管的丫鬟由于无法与大总管通讯,丫鬟 Resin 进程也会自动停掉,释放资源,重获新生。

    640?wx_fmt=png

    依据实验效果我们大胆的猜想,如上图示意,主要有两件事需要去思考,大总管如何下发命令让丫鬟干活;丫鬟如何与大总管保持联系,一旦联系不上大总管丫鬟就自由了。

    其实说的稍微技术一点,那就是大总管进程应该会负责管理丫鬟进程的状态,一旦发现丫鬟进程异常,就尝试让丫鬟重新跑起来;其中丫鬟进程应该与大总管实时保持心跳通讯,一旦通讯失败自身进程就退出。

    好了,这期主要通过分析 Resin 应用服务器启动的进程,向你抛了一个大大的砖,不知道你心中是否已经有解决思路,到底该如何实现,我们将会在下期揭开谜底。

  • 相关阅读:
    安装Catia时连接SQLServer出错的解决
    解决“安装程序无法定位现有系统分区,也无法创建新的系统分区”的方法
    Windows 7中把FTP地址、常用程序添加到资源管理器的收藏夹下
    常用WebService一览表
    DetailsView用法
    GridView绑定实体类的子实体的字段
    html+css正常但是复制到aspx页面出现布局混乱的问题
    ASP.NETSqlConnection对象设置数据库连接池
    ASP.Net内容页访问母版页(MasterPage)属性
    gridview按钮列的下载功能
  • 原文地址:https://www.cnblogs.com/socoool/p/12629768.html
Copyright © 2011-2022 走看看