[eggjs/egg]关于自动重启有没有一个完整的解决方案

2024-08-05 426 views
8

最近看了不少资料,关于生产模式下自动重启依然没有头绪,没有人有这种需求吗

  1. webhooks http://www.abc.com/git-pull-reload git pull后重启项目
  2. 更新config, 动态的在线更新一些配置后重启项目 需求关键点都是要重启,能不能介绍下怎么操作,实在是找不到方向了,卡了几天了

回答

1

看了源码找到了个方法,附上代码,供有遇到问题的朋友参考

// controller/home.js
async reload() {
    if (shelljs.exec('git pull').code !== 0) {
        shelljs.echo('Error: Git pull failed')
    }
    process.send({
        to: 'master',
        action: 'reload-worker',
    })
}

代码不知道有没有副作用,如果有,请指正

4

单机重启没啥意义,一般都是通过前面的 SLB 来切流重启。

6

你说的单机是指的一台服务器,还是多核? 这个需求应该有人有的,除了我上面的例子,还有例如:一个网站,管理希望自己配置一下网站,而这些往往需要yarn stop, yarn start, 而且需要上服务器操作,管理员只会在后台点来点去,这时在后台有一个自动重启就方便很多

7

这两篇我上周翻了n次,没明白是怎么干的,能力有限

9

加油。可以直接联系对应的作者。

另外建议学习下 SLB 这块的相关知识。

2

@guohuihot 我基于 egg-development 插件的 reload 方法做了一个生产环境 reload worker 的插件 https://github.com/hex-ci/egg-hot-reload ,对于希望单机 reload worker 的童鞋可能有用吧~ 我使用 ab 工具 10 万请求 20 并发请求,在 reload 期间进行了测试,工具显示没有失败的请求,看起来貌似没有问题。