Beego开启热升级
开启 升级 Beego
2023-09-14 09:12:25 时间
1、打开配置
beego.BConfig.Listen.Graceful = true
2、写入pid
程序入口main()函数里写入pid
func writePid() {
fileName := "./test_server.pid"
file, _ := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE, 0666)
defer file.Close()
writer := bufio.NewWriter(file)
pid := strconv.Itoa(os.Getpid())
writer.Write([]byte(pid))
writer.Flush()
}
3、测试热升级
1、编写代码,在beego应用的controller中Get方法实现大概如下:
func (this *MainController) Get() {
a, _ := this.GetInt("sleep")
time.Sleep(time.Duration(a) * time.Second)
this.Ctx.WriteString("ospid:" + strconv.Itoa(os.Getpid()))
}
2、打开两个终端
一个终端输入:ps -ef | grep 应用名
一个终端输入请求:curl "http://127.0.0.1:8080/?sleep=20"
3、热升级
kill -HUP 进程ID
4、打开一个终端输入请求:curl "http://127.0.0.1:8080/?sleep=0"
我们可以看到这样的结果,第一个请求等待20s,但是处理他的是老的进程,热升级之后,第一个请求还在执行,最后会输出老的进程ID,而第二次请求,输出的是新的进程ID
相关文章
- SSD 固态硬盘,Trim指令 ,查看状态、开启、关闭
- Docker开启远程安全访问
- Linux下的Apache和PHP安全设置,如何开启PHP的安全模式
- SAP Spartacus 4.0 源代码模式下开启 SSR,为什么会从本地去加载 all.css?
- 【HarmonyOS开启新时代】鸿蒙来了,安卓:“那我走?”
- 【docker】docker 开启2375端口,提供外部访问docker
- 读一篇文章:ChatGPT 全宇宙大爆炸!开启联网解除封印,无敌插件彻底颠覆体验——介绍ChatGPT插件的——希望“文心一言”们,赶紧跟进吧!
- 使用 SpringBoot 整合 MyBatis 开发 开启驼峰映射功能
- 最高月薪16K,十年销售小哥结束北漂为爱转行,开启新的人生旅程
- 开启、关闭数据库mysql
- 【Ubuntu】开启ssh服务/配置ftp内网穿透/自动连接校园网