在 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 服务器的主要内容,如果未能解决你的问题,请参考以下文章