如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)

我们可以简单的通过next start,来启动next.js的application。不过在实际的使用中,面对更大的访问压力,通过多进程的方式来部署next.js呢?

我们可以首先通过pm2的cluster mode来完成这个事情。cluster mode是nodejs非常给力的一种云行方式,可以启动多个进程,并且listen在同一个端口上。具体如何操作呢,我们可以首先建立一个.json文件来描述pm2的任务(命名为pm2.json):

{  "apps" : [  {"name" : "next","script" : "next","args" : "start --port 3000","exec_mode" : "cluster_mode","instances" : 2,"log_file" : "server.log","merge_logs" : true}  ] 
}

解释一下这里的配置:

  • exec_mode就是执行的模式,这个需要设置为"cluster_mode"(写成"cluder"也可以)
  • instances是启动的进程数量,如果写"max",则是按照cpu的数量来启动进程
  • merge_logs是让不同的进程写在同一个日志文件中,否则会分开日志文件

配置文件写好,build结束后,用pm2启动next.js应用就可以了

pm2 start pm2.json

启动之后应该可以看到每一个进程的启动的输出,之后可以ps aux|grep next看到多个next的进程。

然后说明一下在docker中如何通过pm2来启动next.js应用。在docker中,我们需要使用pm2-runtime而不是pm2来启动,这是因为pm2启动目标进程后会damonize,这样docker容器就结束了。

但是直接使用pm2-runtime,因为没有pm2的驻留进程,所以pm2-runtime会找错路径,比如在pm2.json/这个路径下面去找build好的文件。所以需要先启动一下pm2的进程,然后再用pm2-runtime执行,这个方法如下

sudo docker run -it --entrypoint "/bin/bash" \-v $(pwd):/workdir --workdir /workdir \-p 3000:3000 \node:latest \-c "npx pm2 list && npx pm2-runtime start pm2.json"

这样就可以在容器内,启动多个进程的next.js应用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web服务器测试

[rootlocalhost ~]# vim /etc/nginx/conf.d/test_ test_ip.conf test_name.conf test_virtualdir.conf [rootlocalhost ~]# vim /etc/nginx/conf.d/test_name.conf [rootlocalhost ~]# tree /www/

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(五)-无人机跟踪

目录 引言 5.3 无人机跟踪 5.3.1 无人机跟踪模型 5.3.2 无人机位置报告流程 5.3.3 无人机存在监测流程 引言 3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-to-Everyth…

探索前后端数据传输模式:Java、Go与Python的实践20240719

深入解析前后端数据传输:Java、Go与Python的实践 引言 在当今的互联网时代,用户对Web应用的性能和交互体验有着越来越高的要求。无论是信息展示型网站还是复杂的企业应用,前后端数据传输的效率和模式选择都至关重要。本文将深入探讨三种主流…

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号3

基础认证题库请移步:HarmonyOS应用开发者基础认证题库 注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,…

MySQL0.MSI方式安装

本机运行环境:Windows10 1.下载 进入MySQL官方下载页面:https://downloads.mysql.com/archives/installer/ 红色箭头:点击选择下载的版本 黄色箭头:点击下载MSI安装包 此次下载选择MySQL8.0.37的MSI安装包 2.安装 下载完毕后…

x264 写入码流函数分析与介绍

写入码流函数 bs_write函数 作用:用于将一定数量的比特写入到比特流(bitstream)中。这个函数是编码过程中的基本操作,用于将数据序列化到字节流中。函数参数: bs_t *s:指向比特流状态的指针。int i_count:要写入的比特数量。uint32_t i_bits:要写入的比特值。原理过程…

AJAX复习总结

AJAX复习总结 AJAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。简单来说,AJAX就是让网页变得更快、更灵活的一种方法 举个例子&#xff1a…

水表数字识别3:Pytorch CRNN实现水表数字识别(含训练代码和数据集)

水表数字识别3:Pytorch CRNN实现水表数字识别(含训练代码和数据集) 目录 水表数字识别3:Pytorch CRNN实现水表数字识别(含训练代码和数据集) 1.前言 2. 水表数字识别的方法 3. 水表数字识别数据集 4. 水表数字分割模型训练 5. 水表数字识别模型训…

Qt中 .pro、.pri、.prf、.prl文件简解

一、pro文件 .pro就是工程文件(project),是Qt项目的主配置文件,用于描述整个项目的基本信息和编译配置。在Qt中用qmake生成makefile文件,它是由.pro文件生成而来的,.pro文件的具体格式语法如下&#xff1a…

Linux 显示文件行号命令

cat (可能要搭配grep 进行过滤) vi 或 vim (缺点可能会因为粗心,改动文件,如果要修改当没说)

如何使用Python进行数据分析

Python是一种广泛应用于数据科学和机器学习领域的编程语言。本文将介绍如何使用Python进行数据分析,包括Python在数据分析中的应用场景、常用库和工具,以及实际案例分析。 一、Python在数据分析中的应用场景 数据清洗:处理缺失值、异常值&am…

分布式系列之ID生成器

背景 在分布式系统中,当数据库数据量达到一定量级后,需要进行数据拆分、分库分表操作,传统使用方式的数据库自有的自增特性产生的主键ID已不能满足拆分的需求,它只能保证在单个表中唯一,所以需要一个在分布式环境下都…

昇思25天学习打卡营第23天 | 基于MindSpore的红酒分类实验

学习心得:基于MindSpore的红酒分类实验 在机器学习的学习路径中,理解和实践经典算法是非常重要的一步。最近我进行了一个有趣的实验,使用MindSpore框架实现了K近邻(KNN)算法进行红酒分类。这个实验不仅加深了我对KNN算…

idea如何让包结构分层

文章目录 前言1.选中前项目包结构2.取消后项目包结构3.情况二 前言 在大型项目中,代码的分层管理至关重要。IDEA编辑器提供了强大的package分层结构功能,帮助开发者更好地组织和管理代码。通过合理配置,我们可以清晰地看到各个package之间的…

stm32平台为例的软件模拟时间,代替RTC调试

stm32平台为例的软件模拟时间,代替RTC调试 我们在开发项目的时候,如果用到RTC,如果真正等待RTC到达指定的时间,那调试时间就太长了。 比如每隔半个小时,存储一次数据,如果要观察10次存储的效果&#xff0…

pytorch中numel()函数用于获取张量中元素数目

pytorch中,numel() 函数用于获取张量中元素数目,其中 numel() 可以理解为是 number of elements 的缩写。 例如: import torcha torch.randn(2,3) b a.numel() print(a,b)# tensor([[-0.4062, -0.8251, -2.2294], # [ 0.5109, -1.4237, 0.8…

在服务器调用api操作rabbitmq

不同的rabbitmq版本可能api不同,仅做参考,RabbitMQ 3.7.18。同时,我基本没看官方api文档,根据rabbitmq客户端控制台调用接口参数来决定需要什么参数。例如: 1、添加用户 curl -u 用户名:密码 -H “Content-Type: a…

蓝屏死机不再怕!CrowdStrike故障修复指南中心上线!

系统之家于7月22日发出最新报道,安全公司CrowdStrike因其Windows更新引发全球 850 万台电脑蓝屏死机问题后,上线了全新的“修复和指南中心”(Remediation and Guidance Hub),该中心汇集了与其错误更新相关的详细信息&a…

Android音视频—OpenGL 与OpenGL ES简述,渲染视频到界面基本流程

文章目录 OpenGL 简述特点和功能主要组件OpenGL ES当前状态 OpenGL ES 在 Android 上进行视频帧渲染总体流程 OpenGL 简述 OpenGL(Open Graphics Library)是一个跨平台的、语言无关的应用程序编程接口(API),用于开发生…

基于FPGA的数字信号处理(18)--半加器和全加器

前言 在数字系统中,加法运算是最常见的算术运算,同时它也是进行各种复杂运算的基础。 半加器 最简单的加法器叫做 半加器(Half Adder),它将2个输入1bit的数据相加,输出一个2bits的和,和的范围为…