在 ECS 中分析生产 node.js 服务器

Posted

技术标签:

【中文标题】在 ECS 中分析生产 node.js 服务器【英文标题】:Profiling a production node.js server in ECS 【发布时间】:2019-08-03 12:56:19 【问题描述】:

我的 node.js 服务器出现问题,CPU 突然出现峰值,请求有大约 3-5 秒的延迟。

这种情况每隔几天就会发生一次,解决它的唯一方法就是 docker restart 我希望能够查明问题(可能是无限期?)。

那么,如何在 AWS 中分析生产 node.js 服务器?我知道我可能需要在我的代码中添加一行来激活分析器,重新部署以使分析器工作是可以的。

【问题讨论】:

您找到问题了吗?我在 m ECS nodejs 容器中遇到了类似的问题。你发现的可能对我有帮助。谢谢 【参考方案1】:

前段时间我遇到了性能问题,我找到了一个非常方便的解决方案来跟踪问题,而无需太多关于分析等方面的知识。

我使用 N|Solid by Nodesource [1]。让我解释一下为什么这么方便:

    完全兼容 node.js [2] - 只需将 node 可执行文件替换为 nsolid 可执行文件。 不错的价格 [3] - 免费计划包括 5 个受监控的进程。 精美的可视化效果 - 帮助您快速发现问题。 [4] 良好的文档。 快速设置 - 只需创建一个免费帐户、获取许可证密钥并按照以下 docker-compose 文件中的说明设置您的 docker 容器:
version: "3.6"
services:
  nsolid_console:
    image: nodesource/nsolid-console
    ports:
      - 9001:9001
      - 9002:9002
      - 9003:9003
      - 6753:6753
    environment:
      - NSOLID_CONSOLE_LICENSE_KEY=$NSOLID_CONSOLE_LICENSE_KEY
    volumes:
      - ./data/nsolid-console:/var/lib/nsolid/console
    networks:
      default:
        aliases:
          - nsolid_console

  yourService:
    build:
      context: ./
      dockerfile: Dockerfile
    environment:
      - NSOLID_APPNAME=YourApp-Name
      - NSOLID_COMMAND=nsolid_console:9001
      - NSOLID_DATA=nsolid_console:9002 
      - NSOLID_BULK=nsolid_console:9003
    entrypoint: 
      - nsolid your-entrypoint.js
    depends_on:
      - nsolid_console
    links:
      - nsolid_console:nsolid_console

请注意:将$NSOLID_CONSOLE_LICENSE_KEY 替换为您获得的许可证密钥。

参考文献

[1]https://nodesource.com/products/nsolid [2]https://docs.nodesource.com/nsolid/3.4/docs#node-compatibility [3]https://nodesource.com/products/pricing [4]https://docs.nodesource.com/nsolid/3.4/docs#cpu-profiling

【讨论】:

以上是关于在 ECS 中分析生产 node.js 服务器的主要内容,如果未能解决你的问题,请参考以下文章

在生产环境中分析正在运行的 ASP.NET 应用程序

如何在生产环境中分析请求?

在 node.js 中分离游戏服务器和 Web 服务器

想要在本地机器的 JBoss 服务器中分析 Web 应用程序

阿里云ECS安装最新版本Node.js

在命令行中分析正在运行的 Java 应用程序