Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

egg编写入口文件,pm2启动。 #345

Closed
cycgit opened this issue Feb 9, 2017 · 29 comments
Closed

egg编写入口文件,pm2启动。 #345

cycgit opened this issue Feb 9, 2017 · 29 comments

Comments

@cycgit
Copy link
Contributor

cycgit commented Feb 9, 2017

RT,线上环境如何编写app.js or index.js入口文件。 支持pm2启动。

@myfreax
Copy link
Contributor

myfreax commented Feb 9, 2017

@cycgit egg已经内置进程管理器,再使用PM2就显得重复

@cycgit
Copy link
Contributor Author

cycgit commented Feb 9, 2017

@huangyanxiong01 嗯。 好像部署的章节 还在编写当中吧。 目前是怎么把egg部署到线上的。 看文档好像没有说明的。

@fengmk2
Copy link
Member

fengmk2 commented Feb 9, 2017

部署文档还在编写中,配置的启动工具也在开发中。现在可以手动编写一个启动文件,来启动,可以参考 https://github.com/eggjs/benchmark/blob/master/simple/dispatch.js

const egg = require('egg');

const workers = Number(process.argv[2] || require('os').cpus().length);
egg.startCluster({
  workers,
  baseDir: __dirname,
});

这样部署启动只需要执行 $ node dispatch.js 即可。

@fengmk2
Copy link
Member

fengmk2 commented Feb 9, 2017

#241

@arden
Copy link

arden commented Feb 9, 2017

我觉得pm2已经非常成熟的进程及启动管理软件,为什么不直接基于pm2呢?包括日志、web等。

@dead-horse
Copy link
Member

  1. egg 依然可以通过 pm2 启动
  2. 日志、监控和报警有更专业的工具解决,例如 http://sentry.io/
  3. egg 有自己的多进程模型

@atian25
Copy link
Member

atian25 commented Feb 10, 2017

@shaoshuai0102 cluster 文档那里补充下 pm2 的相关内容吧?

@shaoshuai0102
Copy link
Contributor

shaoshuai0102 commented Feb 10, 2017

为什么没有选型 pm2:

  1. pm2 模块本身复杂度很高,出了问题很难排查。我们认为框架使用的工具复杂度不应该过高,而 pm2 自身的复杂度超越了大部分小型应用。
  2. 没法做非常深的优化
  3. 切实的需求问题,一个进程里跑 leader 其他进程代理到 leader 这种模式,在企业级开发中对于减少远端连接,降低数据通信压力等都是切实的需求。特别当应用规模大到一定程度,这就会是刚需。egg 本身起源于蚂蚁金服和阿里,我们对标的起点就是大规模企业应用的构建,所以不能做 toy,要非常全面。通过 pm2 来做比较复杂。

进程模型非常重要,会影响到开发模式,运行期间的深度优化等,我们认为可能由框架来控制比较合适。

@shaoshuai0102
Copy link
Contributor

pm2 这么受欢迎很大一部分原因其实是好看

@luckydrq
Copy link

一般这种强大的进程监控与管理工具,都需要包上好几层进程,有点像高阶函数的赶脚,进程树比较庞大,增加了复杂性。

@atian25
Copy link
Member

atian25 commented Feb 10, 2017

@shaoshuai0102 补充到 cluster 文档吧, 这个算是比较常见的 FAQ 了

@shaoshuai0102
Copy link
Contributor

恩恩 我单独加个 faq 篇章

@popomore
Copy link
Member

@atian25
Copy link
Member

atian25 commented Feb 10, 2017

内容还是写到 cluster 里面吧, FAQ 那边简单说明下, 链接过去

@dead-horse dead-horse mentioned this issue Feb 11, 2017
7 tasks
shaoshuai0102 added a commit that referenced this issue Feb 13, 2017
shaoshuai0102 added a commit that referenced this issue Feb 13, 2017
@atian25
Copy link
Member

atian25 commented Feb 14, 2017

@cycgit
Copy link
Contributor Author

cycgit commented Feb 14, 2017

@atian25 ok

@ckken
Copy link

ckken commented Feb 14, 2017

那需要如何部署服务

@atian25
Copy link
Member

atian25 commented Feb 14, 2017

苏千上面写了,最简单的就是写个入口就好了,用 egg 的环境变量启动

@ckken
Copy link

ckken commented Feb 14, 2017

我的意思是现阶段egg js 部署是通过damon forever 还是什么来进行管理部署到正式环境

@ngot
Copy link
Member

ngot commented Feb 14, 2017

直接运行 nohup node server.js 2>&1 来启动

@dead-horse
Copy link
Member

@ckken 我们是直接类似运行 @ngot 的方式来运行到生产环境的,你可以选择你愿意用的任意方案(pm,forever 等),但是没有太多意义,因为 egg 启动自后自己会进行进程挂掉重启等进程管理的工作。

@ckken
Copy link

ckken commented Feb 14, 2017

Got it,thanks,这几天把文档看完,上一个数据可视化平台和web socket 小牛试刀

@cycgit
Copy link
Contributor Author

cycgit commented Feb 15, 2017

@ckken egg启动的时候是通过EGG_SERVER_ENV 指定环境变量。pm2启动的时候记得指定环境变量。 而且pm2貌似不支持 npm script。 就弄个pm2启动配置文件就好了。 运行环境

// pm2.json
{
    "name": "egg",
    "script": "./index.js",
    "env": { "EGG_SERVER_ENV": "prod" }
}

@limichange
Copy link

limichange commented Mar 28, 2017

感觉直接用docker会好很多,docker直接自己用https://github.com/eggjs/egg-cluster
启动就好了。很简洁省事。

@atian25
Copy link
Member

atian25 commented Mar 28, 2017

@popomore 可以分享下你们结合 docker 的用法

@red010182
Copy link

pm2 能做到開機自動啟動服務(pm2 startup),egg有辦法嘛?

@popomore
Copy link
Member

popomore commented May 3, 2018

initd 了解一下

@oychao
Copy link

oychao commented May 16, 2018

@shaoshuai0102 所说的那些点,其实如果真是中小型应用的话,绝大多数情况是不会在乎这些的。
PS:pm2真的是好看啊,如果没有其他痛点或者体会不到那些痛点,好看就是王道。

@phongf
Copy link

phongf commented Jul 8, 2019

如果通过 pm2 启动,想查看本机的 worker,agent 的个数,及各自 cpu 和 mem 使用情况,可以使用插件 egg-plugin-monitor

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests