问题标签 [pm2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
36942 浏览

pm2 - 调试使用 pm2 运行的应用程序

应用程序由

或者

我想使用 node_inspector 在本地调试我的应用程序。我添加了debug论点

它工作正常,但如果我提供config.json而不是脚本,app.js我不知道如何传递有关调试的参数。下一个配置不起作用

那么如何调试由 pm2 运行并使用配置的应用程序?

0 投票
3 回答
5923 浏览

node.js - 使用 PM2,如何将我的 node.js 应用程序部署到同一服务器上的多个环境和端口?

我有一个用于我使用PM2部署的节点应用程序的生态系统.json 文件。

我尝试了很多不同的方式来配置它,但没有运气实现我的目标,即:

  • 能够部署到生产或登台环境(目前都在同一台服务器上)。
  • 当部署到一个时,另一个也应该保持运行。
  • 2 个不同的环境应该在不同的端口上(prod = 8000,staging = 3000)

发生的事情是我首先运行的部署命令获胜。

因此,如果我这样做pm2 deploy production,则pm2 deploy staging只有生产应用程序/端口组合在服务器上运行,反之亦然,如果我切换顺序。

编辑:如果我使用下面的 conf ,将会有 2 个应用程序在运行pm2 status,但如果我做 a netstat,我只会看到第一个的端口。(分 6)

我觉得我一定遗漏了一些明显的东西。这是我的生态系统.json 文件,我已经尝试过在顶部有和没有多个应用程序声明。

0 投票
1 回答
394 浏览

node.js - 尽管成功 echo $variable,NodeJs /etc/environment 没有看到文件更改

我有一个运行带有 Nodejs、nginx 和 Pm2 的 Ubuntu 的数字海洋水滴,可以在崩溃时重新加载。

/etc/environment该站点在加载我的脚本的意义上可以成功运行,但不幸的是,尽管重新启动并关闭了我的服务器,但它似乎没有获取我对文件变量所做的最新更改。我也尝试过源/etc/environment,但没有成功。

奇怪的是我的服务器返回/etc/environment文件的旧值而不是最新值。

当我在 shell 中运行时,echo $thevariable它会显示更新的值。

所以看起来环境变量已经被缓存了......

关于如何让我的 nodejs 服务器看到我的本地环境变量的任何想法,我将不胜感激。

谢谢你。

0 投票
1 回答
2111 浏览

node.js - pm2 json config 未正确运行应用程序

尝试使用 pm2 启动和运行 nodejs 应用程序。

我们使用 SASS 并使用“node-sass-middleware”在文件更改时重建到 css 文件。一切正常,直到 pm2 每次 sass 中间件重建一个 css 文件时自动重启应用程序......这就是我们告诉它要做的事情:

pm2 start app.js --watch 因此,在阅读了一些文档之后,您似乎应该能够使用 json 文件配置 pm2,并且它具有“ignore_watch”选项。

因此,按照 github 上的指南:https ://github.com/Unitech/PM2/blob/master/ADVANCED_README.md#json-app-declaration我们设置了一个配置 json 文件,如下所示:

问题是,一旦我们尝试运行它,pm2 日志就会吐出 1000 行日志错误,看起来都像这样:

感谢下面的答案 这似乎是罪魁祸首,显然在 linux 世界中 ENOSPC 意味着没有剩余磁盘空间.. 但是整个开发服务器上仅使用 2.1gig,总 HDD 空间为 25gig,这不是问题。

PM2:2015-05-09 15:32:00:错误:观看 ENOSPC

此外,当我们从顶部提到的 cli 运行 pm2 时,一切都很完美......

我们真的需要这样做,因为它对开发团队造成了严重破坏。

有没有其他人遇到过这个问题?

谢谢,约翰

0 投票
1 回答
1386 浏览

node.js - 关于 pm2 reloadLogs 和 log-date-format

我正在使用 pm2 版本 0.12.9

我使用命令启动一个应用程序:

pm2 start bin/www --name gototravel --log-date-format="YYYY-MM-DD HH:mm Z"

然后我查询 pm2 日志

ll ~/.pm2/logs

-rw-rw-r-- 1 wucho wucho 0 May 12 11:03 gototravel-error-0.log

-rw-rw-r-- 1 wucho wucho 1822 May 12 11:03 gototravel-out-0.log

我的第一个问题是我没有看到以时间戳为前缀的日志文件。

然后我跑

pm2 reloadLogs

并查询 pm2 日志,但没有生成另一个日志

ll ~/.pm2/logs

-rw-rw-r-- 1 wucho wucho 0 May 12 11:03 gototravel-error-0.log

-rw-rw-r-- 1 wucho wucho 1822 May 12 11:03 gototravel-out-0.log

我是一个nodejs newbee,你能给我什么建议吗?

s

0 投票
1 回答
569 浏览

node.js - 我可以用 upstart 运行 PM2 集群吗?

我编写了一个 NodeJS 服务,它将持续运行。我想使用 PM2 运行它的两个副本。

我也在尝试为它编写一个新贵脚本,但我无法让它工作(基本上stop不会工作,PID 永远不会正确。

我在 upstart 的节上读了一点expect,它告诉 upstart 服务是分叉 0 次、一次还是两次,我意识到 PM2 分叉 4 次然后结束,所以没有 PID 供 upstart 杀死以停止进程。

我应该放弃暴发户并为我的服务编写不同类型的启动脚本吗?

0 投票
1 回答
1064 浏览

node.js - pm2 list 命令显示格式错误的结果

我第一次在远程 Ubuntu 实例上玩pm2 。

它似乎运行良好,但是当我使用pm2 list表格格式列出正在运行的进程时有点混乱。

在此处输入图像描述

这没什么大不了的,因为一切似乎都在工作,但只是想知道为什么显示器会这样显示。

这是 Ubuntu 14.04,节点 0.10.25 通过 Putty 连接

有任何想法吗?

0 投票
1 回答
1274 浏览

node.js - nodejs集群+域与PM2有什么区别?

NodeJS 有自己的模块来管理集群和进程重启:

  • 集群模块,它允许节点根据机器中的核心数运行多个进程。当旧进程关闭时,这也会产生新进程。

  • 域模块允许节点在发生错误后停止接受请求并关闭进程。

然后是PM2,我看过类似这样的指南,说 PM2 允许日志记录、一些统计信息监控、进程重启和 nodejs 集群。

除了统计监控和日志记录之外,有人可以解释两者之间的区别是什么吗?它们应该一起使用还是我选择一个或另一个?

在生产环境中,每个 nodejs 应用程序在启动时关闭 + 重新启动的费用如何:

  • 系统需要重启(应用系统补丁等)

  • 重新启动所有 nodejs 进程以在服务器上应用新的代码更改。

0 投票
0 回答
1365 浏览

node.js - PM2 使用 Express 应用程序端口侦听器和 phantomjs-node 实例引发错误

所以我有一个正在监听的快速应用程序,localhost:8888如果我在节点中独立运行它,它会很好地监听。但是当我尝试使用 PM2 运行它时,我在 PM2 日志中得到以下错误。

pm2 start -i 0 myserver.js

PM2 显示它启动了 8 个进程,但是如果我什么都不做pm2 list,那就没有了。

查看pm2 logs我在下面的日志中看到错误。但是..如果我注释掉这serve.listen(8888);条线,它就可以了。我到底在做什么错在这里?

0 投票
1 回答
1084 浏览

javascript - phantomjs-node 尝试在 node-cluster 后面扩展时崩溃

相关的 GitHub 问题:https ://github.com/sgentle/phantomjs-node/issues/280

我有一个简单的应用程序,它执行以下操作:

只要我在 WebStorm 中运行它,它就可以正常运行,并且我可以使用任意数量的/foo并发请求访问端点,并且一切都按预期工作。

但是,一旦我尝试将其扩展到 PM2 w/pm2 start -i 0 phantomapp.js之后,只要我不向它抛出太多请求,一切仍然可以正常工作。第二次我打开两个浏览器窗口并在两者中点击刷新,我在pm2 logs. 此时,由 PM2 管理的所有 8 个进程都“消失”了!我究竟做错了什么??:

您可以使用节点本机集群重现相同的问题:

尝试同时处理 > 1 个请求时,会在控制台中产生以下错误: