Tag: pm2

从父节点进程(PM2,NodeJS)运行更新脚本

我有一个名为update.sh的脚本更新服务器。 问题在于; 当我停止PM2进程时,它结束了bash进程(?)。 我无法弄清楚如何从没有链接到父级的父级产生一个进程。 :-S update.sh #!/bin/bash # Check we are not already updating. if [ -f update.lock ]; then echo "Already updating. Locked." exit fi # Make the log file. rm update.log touch update.log # Create update lock. touch update.lock echo "Cleaning up" | tee update.log rm -rf the-last-word rm -rf Server echo "Retreving […]

使用pm2在同一节点上运行多个节点实例

我想在单个服务器上运行2个node.js应用程序,使用pm2,这些应用程序需要通过puppet部署。请您build议这是可能的。 问候,巴拉

为什么PM2重新启动我的过程?

我有一个非常简单的HTTP端点,可以发送到并将有效载荷放入消息队列中。 由于它应该始终运行,所以没有process.exit(),所以我确定它不是故意退出的。 我想它是因为exception而重新启动,但是我已经检查了PM2日志,并注意到PM2重新启动,没有任何exception被logging。 我认为重新启动的唯一原因是因为从“pm2列表”中重新启动的数字在整个一天中缓慢递增。 操作系统:Windows 2012 PM2版本(内存):0.15.10 PM2版本(本地):1.1.3 从哪里开始寻找任何方向?

PM2(节点)从命令行向群集发送消息

所以我有一个使用PM2进行pipe理的进程,这个进程在Nodejs中是非常典型的。 然而,通过查看文档看起来好像可以发送消息来以集群模式启动进程。 问题是文档是编程的,没有提示如何从命令行调用它,而不是将sigusr2传递给应用程序。 如果我可以通过sigusr2传递一个信息来解决我的问题,但是只要给我发送消息就足够了。 那么是否有办法将消息传递给由PM2pipe理的进程集群,以便我可以使用process.on('message', ()=>{})构造来处理它?

pm2进程自己删除,进程不再发现

我们有一个在Node上运行的进程,两天前自杀。 以下是来自pm2.log 2017-01-04 08:30:47: pm2 has been killed by signal, dumping process list before exit… 2017-01-04 08:30:47: Deleting process 0 2017-01-04 08:30:47: Stopping app:main id:0 2017-01-04 08:30:47: App [main] with id [0] and pid [32528], exited with code [0] via signal [SIGTERM] 2017-01-04 08:30:47: [PM2] Exited peacefully 重新启动进程0(不再运行)现在返回: [PM2] Applying action restartProcessId on app [0](ids: […]

PM2不会在Docker内部启动

尝试使用docker-compose从Docker中的卷中运行并重新加载节点应用程序。 目标是使应用程序在容器内运行,而不会丢失在容器外编辑/重新加载代码的能力。 我已经通过了PM2的docker集成build议,并使用keymetrics/pm2-docker-alpine:latest的基础图像。 docker-compose.yml文件定义了一个简单的Web服务。 version: '2' services: web: build: . ports: – "${HOST_PORT}:${APP_PORT}" volumes: – .:/code 其中使用了一个相当简单的Dockerfile。 FROM keymetrics/pm2-docker-alpine:latest ADD . /code WORKDIR /code RUN npm install CMD ["npm", "start"] 哪个调用npm start : { "start": "pm2-docker process.yml –watch" } 其中指的是process.yml : apps: – script: './index.js' name: 'server' 在本地运行npm start可以很好地工作 – PM2会运行节点进程并监视代码的变化。 但是,只要我试着在容器中运行它,我就会在启动时出现以下错误: Attaching to app_web_1 […]

获取永久应用程序或pm2应用程序的状态

我目前正在使用,但正在考虑切换到pm2,因为永远不会提供状态选项。 我不能做: forever status myApp 要确定我的应用程序是否正在运行,我必须这样做: forever list | grep -i myApp 即使这样,它是不可靠的,因为myApp可能被列为停止状态(我感谢你可以拿出一些难看的grep解决scheme,以适应,但我想要的东西自然)。 随着pm2文档说,你可以这样做: pm2 show myApp # Show all informations about application pm2似乎更加自然。 任何想法如何获得应用程序状态永远使用,而不会永远列表? pm2如何比较获取应用程序状态?

PM2日志输出限制

我很高兴PM2如何格式化和输出日志 pm2 logs app 但目前它将日志截断为20个最后的条目: [PM2] [app]过程尾随20行 有没有办法改变限制,并以类似的方式输出它,但有1000行,例如?

节点JS pm2最大内存限制

我正在使用pm2和节点js。 我想要做的是为应用程序设置最大内存限制。 我的开发者服务器的限制是两个应用程序之间的500MB拆分。 理想情况下,我想限制到200MB。 我需要这个限制是对应用程序的一个硬性限制,并且如果它超过了它,像pm2命令“max_memory_restart”那样不重新启动应用程序。 我也尝试使用–max_old_space_size命令,但没有运气。 有没有办法做到这一点? 例子pm2 json文件 { "apps": [ { "name": "Sample", "script": "runit.js", "watch": false, "cwd": "xxxxxx", "env": { "NODE_TLS_REJECT_UNAUTHORIZED": '0', "NODE_ENV": "local_public", "PORT": 3000, "PROXY_PORT": 4000, }, "args": [ "–max_old_space_size=200" ] } ] }

PM2生产优化

我只是尝试在“生产”环境中部署节点应用程序。 我使用这个命令使用PM2来运行应用程序。 pm2 start app.js –name <appname> 我的问题是: 为什么我看child_process我分叉的child_process的console.log ? 可以调用很多child_process.fork吗? 编辑1 基本上,应用程序使用chokidar来观看文件夹。 当有新文件时,它将检查文件types,然后执行以下任一项: 如果文件types是.FLV那么应用程序会将文档添加到mLab中承载的MongoDB集合中。 如果文件types是.PNG则应用程序将使用child_process.fork将文件上载到S3存储桶。 如果文件types是.MP4 ,应用程序将使用child_process.fork将file upload到S3存储桶,然后运行FFmpeg命令生成一个在另一个child_process.fork上运行的屏幕截图,然后触发上面的过程2 ,同时执行MongoDB更新另一个child_process.fork 。 这是代码片段 1. Chokidar Watcher(app.js) 编辑2 为我如何使用chokidar和分支subprocess添加了代码片段。