最近用go语言重写了一个node的小项目,因为并发量大到两台node也只能勉强扛住的地步,顺便说一下,pm2的cluster模式在极高的并发量下其实不行,不知道为什么,后来用fork模式+node原生的cluster模块才搞定。 因为go重写的版本匆忙上线,测试时我居然用的是screen在后台跑。看了beego关于supervisor部署的介绍,感觉那不是我想要的东西,因为我觉得pm2应该也有这样的功能,于是去查了文档,果然有,测试跑了几天,完全没有问题。配置很简单,与node完美并存
$ cat pm2.config.js
module.exports = {
apps: [
{
name: "goapp",
script: "./config.product.json", // script当成配置文件,在go中通过os.Args[1]获取到
instances: 1,
exec_mode: "fork", // 一定要是fork
interpreter: "./main", // windows下加.exe
env: { // 环境变量
myenv: "product",
},
}
]
}
经过研究,发现其实PM2还可以用更优雅的方式启动任意二进制程序:(参考 https://github.com/Unitech/pm2/issues/471 )
apps:
- name: myapp
interpreter: none
script: ./main
args:
- ./config.product.json
或者,把go编译成二进制,直接pm2 start main ,我看默认的模式就是fork
标签:fork,node,pm2,完美,go,main,config From: https://www.cnblogs.com/lidabo/p/17036999.html