进程启动顺序的一些疑问

web服务进程是supervisor管理的, 项目依赖rabbitmq, 很多时候重启机器的时候, rabbitmq启动太慢了, 导致到supervisor起来的时候, 连带的web服务也起来, 可是由于rabbitmq没有起来, 所以导致web服务挂了, 每次重启都需要手动的去操作一下supervisor, 疑问是:

  • 有什么方法可以保证supervisor是在rabbitmq完整启动以后再启动的吗?
  • 或者是supervisor启动后, 底下的进程判断rabbitmq完整启动后再启动?
  • rabbitmqsupervisor都是service管理的, ubuntu系统级的启动顺序可以做到这个需求吗?
  • 除了写shell脚本来轮询判断, 还有什么更好的方法?
  • 谢谢
阅读 4.4k
2 个回答

没怎么用过rabbitmqsuopervisor,这里给点参考意见,希望对你有用

一般开启一些应用进程,应用服务做的比较(非常)好的话,会提供相应的命令去对进程做查询或者监听,你可以去看看rmqsupervisor的官网去看看,或者查看一下man找找是否有相关的命令参数操作.

如果没有的话,可以再看看下面的参考,自行编写shell脚本来管理:

1.应用程序一般开启时,开启后,会有几种信息:
日志信息,命令行界面信息,资源管理器进程信息等等.一个进程是否完全启动,或者是达到你所需要的状态,可以参考以上日志或信息作出判断

2.如果连上面的信息都没有或者无法判断的话,我给一个非常土的办法,那就是延时启动.这个办法并不是最好的,但是也是没有办法的办法(谁叫应用程序服务做的不到位).比如你要在启动rmq后启动supervisor,预估一下rmq的启动时间,比如1s,那就在执行启动rmq进程,延时一秒后执行supervisor

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题