跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求问 Golang Web 服务的自动重启方案
未分類
29 10 月 2020

求问 Golang Web 服务的自动重启方案

求问 Golang Web 服务的自动重启方案

資深大佬 : ksedz 3

现在的 Web 服务由于一些 bug,会导致服务宕掉

自动的 recover 中间件等只能处理当前 goroutine 中的 panic,如果每个 goroutine 都要 recover 处理下就太麻烦了,而且也不能有效排除后续维护人员的偷懒或失误

看了一些相关模块,没有太满意的,期望的是像 supervisor 的那样的功能,但是不想用 python 包,也想用更轻量级的方案。

求问大家是怎么解决的。

大佬有話說 (20)

  • 資深大佬 : susecjh

    docker

  • 資深大佬 : DoctorCat

    写个看门狗脚本,例如 kill YourGoService && ./YourGoService 然后 cronjob 定期运行一次

  • 資深大佬 : Maboroshii

    systemd

  • 資深大佬 : meshell

    不可能用 supervisor 吗

  • 資深大佬 : 676529483

    虚机起就 systemd,容器就 docker –restart=always

  • 資深大佬 : coderxy

    docker 吧

  • 資深大佬 : wellsc

    systemd

  • 資深大佬 : zunceng

    你的 http 框架最好可以支持 HandleChain 这样可以实现一个 recover 的中间件

    func HandleRecover(ctx webFrame.Context) {
    ctx.Next()
    if err := recover();err != nil {
    // print err
    }
    }

    然后把这个中间件加在 HandleChain 的第一个 就可以了

    router.use(HandleRecover)

    最简单的 直接用成熟的 http 框架 比如说 gin 自带 recover

  • 資深大佬 : dongisking

    最好的还是 systemd 和 docker

  • 資深大佬 : coderxy

    @zunceng 没用的,go 里面开启一个新的协程就得重新捕获,不然整个程序就会 crash 。而且你这个写的也不对,ctx.next()应该放在 recover 后面,而且还有放到 defer 里。不然 ctx.next()先执行,里面有 panic 你的程序就 crash 了

  • 資深大佬 : index90

    用进程守护就不怕中断服务中断吗?

  • 資深大佬 : MarksGui

    @zunceng 在方法内部新开的 goroutine panic 是无法被统一的 recover 的。

  • 資深大佬 : cheng6563

    写一个健康检查的接口。
    外部用 systemd 或者 docker 之类的进行健康检查。

  • 資深大佬 : SingeeKing

    service 外面包裹一层自动重启的软件,例如利用 supervisor / pm2 做管理

  • 資深大佬 : SingeeKing

    没细看,lz 是不是对 supervisor 有误解,supervisor 只是用 Python 写的,可以管理任何进程而不是只能管理 python 程序

  • 資深大佬 : janxin

    你进程都崩了,很多信息会丢的,你确定这样没问题吗?

  • 資深大佬 : outoftimeerror

    docker+k8s

  • 資深大佬 : freestyle

    golang 版 supervisord,不需要 Python 环境,一个二进制文件加配置文件 https://github.com/ochinchina/supervisord

  • 資深大佬 : ArJun

    docker 最好用

  • 資深大佬 : ericgui

    @zunceng 重启还是要靠系统层面解决,比如内存泄露咋办,这 recover 就没用了,平时每次执行都 if else 一下,其实浪费性能

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具