pm2、节点、实例和端口
pm2, node, instances and ports
抱歉,如果这个问题是'newbie',但我不知道如何去做/它是如何工作的。
1/ 我正在使用 node.js 创建一个 API,API 服务于一些前端应用程序
2/ 为了让它更健壮,我使用 pm2(很棒的产品),使用 nginx 作为代理,很好
3/ 但是我如何处理 node.js api 的多个实例?我看到 'cluter mode',很好,但是当我的 node.js 正在侦听单个端口(例如 8080)时发生了什么?如果我配置 4 个进程/实例,它们就不能同时监听同一个端口啊? ...所以:pm2 是否在实例之间调度调用(因此确实充当了一种代理)。
任何线索将不胜感激,它是如何工作的?
格雷格
集群模式下的节点创建一个主节点,然后生成共享 TCP 连接的工作进程,因此负载基本上分布在工作进程之间。
这是一篇详细介绍 pm2 和节点集群的漂亮文章 -
https://getstream.io/blog/running-pm2-node-js-in-production-environments/
希望对您有所帮助。
感谢大家的回答,
所以,根据你给我的所有提示:
- 我必须自己处理线程之间的会话和变量,
- pm2集群模式才是正道
- pm2 将在实例之间调度调用,比方说以循环方式
案例结束,再次非常感谢你提供的所有提示和答案,你节省了我很多时间。
您也可以使用 nginx 管理负载。这是 nginx load balance
的文档
之后,您可以使用 .env 文件中的环境变量 运行 具有特定端口的应用程序,并像这样访问它。例如:process.env.PORT
之后 运行 应用以这种方式使用 pm2
PORT=5003 pm2 start routes.js --name app5003
PORT=5002 pm2 start routes.js --name app5002
PORT=5004 pm2 start routes.js --name app5004
抱歉,如果这个问题是'newbie',但我不知道如何去做/它是如何工作的。
1/ 我正在使用 node.js 创建一个 API,API 服务于一些前端应用程序
2/ 为了让它更健壮,我使用 pm2(很棒的产品),使用 nginx 作为代理,很好
3/ 但是我如何处理 node.js api 的多个实例?我看到 'cluter mode',很好,但是当我的 node.js 正在侦听单个端口(例如 8080)时发生了什么?如果我配置 4 个进程/实例,它们就不能同时监听同一个端口啊? ...所以:pm2 是否在实例之间调度调用(因此确实充当了一种代理)。
任何线索将不胜感激,它是如何工作的?
格雷格
集群模式下的节点创建一个主节点,然后生成共享 TCP 连接的工作进程,因此负载基本上分布在工作进程之间。
这是一篇详细介绍 pm2 和节点集群的漂亮文章 -
https://getstream.io/blog/running-pm2-node-js-in-production-environments/
希望对您有所帮助。
感谢大家的回答, 所以,根据你给我的所有提示:
- 我必须自己处理线程之间的会话和变量,
- pm2集群模式才是正道
- pm2 将在实例之间调度调用,比方说以循环方式
案例结束,再次非常感谢你提供的所有提示和答案,你节省了我很多时间。
您也可以使用 nginx 管理负载。这是 nginx load balance
的文档之后,您可以使用 .env 文件中的环境变量 运行 具有特定端口的应用程序,并像这样访问它。例如:process.env.PORT
之后 运行 应用以这种方式使用 pm2
PORT=5003 pm2 start routes.js --name app5003
PORT=5002 pm2 start routes.js --name app5002
PORT=5004 pm2 start routes.js --name app5004