在 ECS 中分析生产 node.js 服务器
Profiling a production node.js server in ECS
我的 node.js 服务器出现问题,突然出现 CPU 峰值并且请求有大约 3-5 秒的延迟。
这种情况每隔几天发生一次,解决它的唯一方法就是 docker restart
我希望能够查明问题所在(也许是无限期?)。
那么如何在 AWS 中分析生产 node.js 服务器?我知道我可能需要在我的代码中添加一行来激活分析器,重新部署分析器工作是可以的。
前段时间我遇到了一个性能问题,我找到了一个非常方便的解决方案来跟踪问题,而不需要太多关于分析等方面的知识。
我使用了 Nodesource [1] 的 N|Solid。让我解释一下为什么这么方便:
- 完全 node.js 兼容性 [2] - 只需将节点可执行文件替换为 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
我的 node.js 服务器出现问题,突然出现 CPU 峰值并且请求有大约 3-5 秒的延迟。
这种情况每隔几天发生一次,解决它的唯一方法就是 docker restart
我希望能够查明问题所在(也许是无限期?)。
那么如何在 AWS 中分析生产 node.js 服务器?我知道我可能需要在我的代码中添加一行来激活分析器,重新部署分析器工作是可以的。
前段时间我遇到了一个性能问题,我找到了一个非常方便的解决方案来跟踪问题,而不需要太多关于分析等方面的知识。
我使用了 Nodesource [1] 的 N|Solid。让我解释一下为什么这么方便:
- 完全 node.js 兼容性 [2] - 只需将节点可执行文件替换为 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