Nin*_*man 6 amazon-ec2 sequelize.js autoscaling amazon-aurora connection-pool
在 Sequelize.js 中,您应该配置最大连接池大小(默认为 5)。当我在 AWS 中的自动缩放平台上工作时,我不知道如何处理此配置。
r3.2xlarge 上的 Aurora 数据库集群允许每个只读副本的最大连接数为 2000(您可以通过运行 SELECT @@MAX_CONNECTIONS; 获得该连接)。
问题是我不知道 EC2 上托管的每台服务器的正确配置应该是什么。正确的最大连接池大小应该是多少,因为我不知道自动缩放组将启动多少台服务器?通常情况下,DB MAX_CONNECTIONS 值应该除以连接池的数量(服务器一个),但我不知道最后会实例化多少个服务器。
在我们的发布日期,我们的并发用户数估计在 50000 到 75000 个并发用户之间。
有没有人以前有过这种情况的经验?
小智 5
自从你问起已经 6 周了,但自从我最近参与了这件事,我想我会分享我的经验。
答案因应用程序的工作和执行方式而异。加上实例类型负载下的应用程序的特性。
1) 您希望池大小大于在您的主机上运行的预期同时查询。
2)您永远不希望出现客户端数量 * 池大小接近最大连接限制的情况。
请记住,同时查询通常少于同时 Web 请求,因为大多数代码使用连接来执行查询然后释放它。
因此,您需要对您的应用程序进行建模,以了解您的 75K 用户会发生的实际查询(和数量)。这可能比每秒 75K/秒的 db 查询少很多。
然后你可以构建一个脚本——我们使用了 jmeter——并运行一个测试来模拟性能。我们在测试期间所做的项目之一是将池增加得更高并查看性能差异。我们在做基线后实际上使用了一个很大的数字(100),发现这个数字有所不同。然后我们将其放下,直到它开始发挥作用。在我们的例子中它是 15,所以我将它设置为 20。
这是针对 t2.micro 作为我们的应用程序服务器。如果我将服务器更改为更大的,这个值可能会上升。
请注意,当您设置更高的数字时,您会在应用程序启动时支付成本......并且您还会在服务器上产生一些开销以保持这些空闲连接,因此使大于您需要的连接数是不好的。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
2057 次 |
| 最近记录: |