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