我有一个简单的 Django 应用程序,我一直在用 Blitz.io 进行测试。当我使用许多 dynos 进行测试时,我可以在 http://X.com 上获得数千个 req/s 当我切换到 https://X.com 时,无论有多少 dynos,我都不会超过 72 req/s。在 https://X.herokuapp.com/ 上我得到了更多,但它仍然以几百个 req/s 最高。
这是不会出现在正常用例中的侥幸吗?闪电战问题?一个heroku问题?资源会随着需求而扩大吗?
我有一个简单的 Django 应用程序,我一直在用 Blitz.io 进行测试。当我使用许多 dynos 进行测试时,我可以在 http://X.com 上获得数千个 req/s 当我切换到 https://X.com 时,无论有多少 dynos,我都不会超过 72 req/s。在 https://X.herokuapp.com/ 上我得到了更多,但它仍然以几百个 req/s 最高。
这是不会出现在正常用例中的侥幸吗?闪电战问题?一个heroku问题?资源会随着需求而扩大吗?
我们在 blitz.io 和 loader.io 上遇到了非常相似的问题。有关更多详细信息,请参阅我们在http://making.fiftythree.com/load-testing-an-unexpected-journey/上的博客文章。blitz.io 很可能是您的 SSL 问题的原因。我们发现BlazeMeter可以很好地处理负载。
此答案假定https://X.com使用 SSL:endpoint heroku 插件来提供自定义证书。
ssl:endpoint 插件是使用 AWS Elastic Load Balancer 实现的。ELB 使用 DNS 在其节点之间分配负载。以我的经验,每个单独的 ELB 节点并不是特别强大,从 CPU 的角度来看,SSL 协商/解密并非易事。因此,在进行负载测试时,重要的是:
如果单个 ELB 节点上允许的并发连接方面的 HTTP/HTTPS 容量之间的差异很大,我并不感到特别惊讶,如果您固定到一个 IP,这可能是您观察到的差异的原因。
我不知道 https://*.herokuapp.com 堆栈的详细信息,但我一点也不惊讶它可以提供比冷 ssl:endpoint ELB 更多的 https 流量。