【发布时间】:2016-11-25 17:03:17
【问题描述】:
我有一个在 AWS 中运行的基于 SQL-Alchemy 的 Web 应用程序。
Web 应用程序在 ELB 后面有几个 c3.2xlarge EC2 实例(每个 8 个 CPU),它们接受 Web 请求,然后查询/写入共享数据库。
我使用的数据库是 RDS 实例类型:db.m4.4xlarge。
它正在运行 MariaDB 10.0.17
我的 SQL Alchemy 设置如下:
SQLALCHEMY_POOL_SIZE = 3
SQLALCHEMY_MAX_OVERFLOW = 0
在重负载下,我的应用程序开始抛出以下错误:
TimeoutError: QueuePool limit of size 3 overflow 0 reached, connection timed out, timeout 30
当我将 SQLALCHEMY_POOL_SIZE 从 3 增加到 20 时,对于相同的负载测试,错误就会消失。以下是我的问题:
- 我的数据库总共可以处理多少个同时连接?
- 假设
Number of Number of EC2 instances * Number of Cores Per instance * SQLALCHEMY_POOL_SIZE可以达到但不能超过问题 #1 的答案是否公平? - 我是否需要了解有关数据库连接池的任何其他限制 像我这样的分布式网络应用程序的大小?
【问题讨论】:
标签: amazon-web-services sqlalchemy mariadb amazon-rds