进程启动顺序的一些疑问
web服务进程是supervisor
管理的, 项目依赖rabbitmq
, 很多时候重启机器的时候, rabbitmq
启动太慢了, 导致到supervisor
起来的时候, 连带的web服务也起来, 可是由于rabbitmq
没有起来, 所以导致web服务挂了, 每次重启都需要手动的去操作一下supervisor
, 疑问是:
- 有什么方法可以保证
supervisor
是在rabbitmq
完整启动以后再启动的吗? - 或者是
supervisor
启动后, 底下的进程判断rabbitmq
完整启动后再启动? rabbitmq
和supervisor
都是service
管理的,ubuntu
系统级的启动顺序可以做到这个需求吗?- 除了写
shell
脚本来轮询判断, 还有什么更好的方法? - 谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没怎么用过
rabbitmq
和suopervisor
,这里给点参考意见,希望对你有用一般开启一些应用进程,应用服务做的比较(非常)好的话,会提供相应的命令去对进程做查询或者监听,你可以去看看
rmq
和supervisor
的官网去看看,或者查看一下man
找找是否有相关的命令参数操作.如果没有的话,可以再看看下面的参考,自行编写shell脚本来管理:
1.应用程序一般开启时,开启后,会有几种信息:
日志信息,命令行界面信息,资源管理器进程信息等等.一个进程是否完全启动,或者是达到你所需要的状态,可以参考以上日志或信息作出判断
2.如果连上面的信息都没有或者无法判断的话,我给一个非常土的办法,那就是延时启动.这个办法并不是最好的,但是也是没有办法的办法(谁叫应用程序服务做的不到位).比如你要在启动
rmq
后启动supervisor
,预估一下rmq
的启动时间,比如1s,那就在执行启动rmq
进程,延时一秒后执行supervisor
。https://wiki.debian.org/LSBIn...
service管理当然能够做到,你把rmq接入到supervisor的依赖项里吧。