【问题标题】:PM2 NodeJs Cluster ModePM2 NodeJs 集群模式
【发布时间】:2017-06-06 14:15:39
【问题描述】:

我有 4 个在 AWS 上运行的 ec2 实例。 PM2 在所有实例上以集群模式运行。当我收到 5K+ 并发请求时,应用的响应时间会显着增加。

所有请求都获取redis key,正常获取需要10秒,如果没有这么多并发请求,只需要50ms。这里有什么问题?

【问题讨论】:

    标签: node.js amazon-ec2 redis pm2


    【解决方案1】:

    我们需要查明瓶颈。让我们做一些诊断:

    1. EC2 实例是多核的以利用 PM2 的集群吗?

    2. 当您执行pm2 start app.js -i X 时,您确定 X=number_of_vCPUs 的 EC2 实例吗?

    3. 当您执行pm2 monit 时,您是否看到集群的所有实例共享相同的 CPU 和内存使用率?

    4. 当您运行 htop 时,您的总 CPU 和内存使用率是多少?

    5. 当您执行 iftop 时,您的 RX 和 TX 总流量与您机器中可用的最大流量相比是多少?

    【讨论】:

    • 1) 是的。它的多核。 c4.8x.large 带 16 个 vCPU 2) 是。 3) 是的。所有份额相等 4) CPU 使用率在 0 到 50 之间变化。平均约为 24% 5) RX 峰值 - 185,TX 峰值 - 181。总峰值 - 170。RX CUM - 189,TX CUM - 815,TOTAL CUM - 1.5 GB
    • 刚才看到,一些 pm2 进程的 CPU 使用率在 1 秒内增加到 100%,然后降低到 24
    • 我在 CentOS 上运行 ec2
    • 乍一看,这似乎是一个 I/O 瓶颈。不知道我将如何继续验证。我想您的所有请求都要求使用相同的密钥来消除变量。我可能会再次尝试负载测试,同时为同一个键返回一个更小的值,然后再次返回一个更大的值。大约 2 个数量级应该足以证明它是否是 I/O 瓶颈。
    • 我启用了套接字 io,当发出消息时,所有连接的客户端都会在那时获取数据。那是系统变慢的时候。否则一切正常。
    猜你喜欢
    • 2015-03-20
    • 2020-06-26
    • 2019-03-02
    • 2022-01-23
    • 2018-01-17
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多