Nodejs pm2 start app.js后, 一直都像是卡起的样子.

发布于 1周前 作者 bupafengyu 来自 nodejs/Nestjs

Nodejs pm2 start app.js后, 一直都像是卡起的样子.

Launching daemon { online: true, success: true, pid: 15536 }

它就一直这个样子, ctrl+c后, 能看到在监听6000端口. 我这是VPS, 虚拟机都能正常的. 咋回事? node都是一样的版本0.10.17. pm2也是一样的版本.

3 回复

Nodejs pm2 start app.js后, 一直都像是卡起的样子

问题描述

使用 pm2 start app.js 启动应用后,应用似乎一直处于卡顿状态。控制台显示启动成功,但没有任何进一步的输出或响应。尝试 Ctrl+C 后,可以看到应用确实在监听指定的端口。

环境信息

  • 操作系统: VPS (虚拟机)
  • Node.js 版本: v0.10.17
  • PM2 版本: [具体版本]

可能的原因

  1. 应用代码中存在阻塞操作:如果应用中有长时间运行的操作(如同步文件读写、数据库查询等),可能会导致应用看起来像是卡住了。
  2. 日志输出问题:应用可能有错误发生,但由于某些原因没有正确输出到控制台。
  3. 环境配置问题:某些环境配置可能导致应用无法正常运行。

解决方法

  1. 检查应用代码

    • 确保应用代码中没有长时间阻塞的操作。可以使用异步操作来避免阻塞主线程。
    • 示例代码:
      const http = require('http');
      
      http.createServer((req, res) => {
        setTimeout(() => {
          res.writeHead(200, {'Content-Type': 'text/plain'});
          res.end('Hello World\n');
        }, 1000); // 模拟一个耗时操作
      }).listen(6000, () => {
        console.log('Server running at http://127.0.0.1:6000/');
      });
  2. 查看 PM2 日志

    • 使用 pm2 logs 查看应用的日志输出,以确定是否有错误信息。
    • 示例命令:
      pm2 logs
  3. 检查环境配置

    • 确保 VPS 的环境配置与虚拟机一致。特别是网络配置、资源限制等。
    • 检查是否有防火墙规则阻止应用访问端口 6000。
  4. 更新 Node.js 和 PM2

    • 尽管你的环境中 Node.js 和 PM2 版本一致,但旧版本可能存在已知问题。建议升级到最新稳定版。
    • 示例命令:
      sudo npm install -g n
      sudo n stable
      sudo npm install -g pm2

通过以上步骤,你应该能够诊断并解决应用卡顿的问题。


唉, 果断切换到别的玩意儿去, 都搞了两天都没搞定. 都不支持gentoo的pm2 startup. 不知forever 咋样, 试试看去.

根据你的描述,pm2 start app.js 启动应用后,进程似乎没有正常运行,并且在控制台输出了 { online: true, success: true, pid: 15536 }。这通常意味着 PM2 已经成功启动了你的应用,但可能是因为某些原因导致应用没有进一步执行。

首先,你可以检查一下 app.js 文件的内容,确保它没有阻塞或死循环。以下是一个简单的示例 app.js 文件:

// app.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
});

const port = process.env.PORT || 6000;
server.listen(port);

console.log(`Server running at http://localhost:${port}/`);

确保你的应用能够正确地响应请求。此外,你可以通过 PM2 查看日志文件来获取更多信息:

pm2 logs

这样可以帮助你了解应用是否抛出了错误。如果应用没有打印任何日志信息,可以尝试在代码中添加更多的日志信息,以便更好地调试。

如果你确认 app.js 的内容是正确的,并且没有抛出任何错误,可以考虑以下几个可能的原因:

  • 确保你的 VPS 配置允许监听 6000 端口。
  • 检查是否有其他服务占用了该端口。
  • 尝试重启 PM2 或重新安装 PM2。

如果问题依然存在,请提供更多的 app.js 代码,以便更好地诊断问题。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!