默认配置适合常见的单机部署。没有反复出现
DATABASE_BUSY,也没有增加 Web 或 Worker 进程时,无需修改连接池。默认连接容量
默认启用 Workbook 时,应用的保守连接峰值是
51:
100 已包含足够余量。POOL_SIZE 只是连接池保留的连接数,不是连接上限;连接上限还要加上 MAX_OVERFLOW。
遇到 DATABASE_BUSY
DATABASE_BUSY 表示 AskTable 暂时没有拿到数据库连接,或者 PostgreSQL 已达到连接上限。页面会自动重试,仍未恢复时可以手动重试。
如果错误反复出现:
- 查看日志,确认来自 Web 请求还是后台刷新。
- 后台刷新繁忙时,先降低
AT_WORKER_MAX_JOBS。 - PostgreSQL 已报连接数耗尽时,不要继续增大连接池。
- 只有确认 PostgreSQL 仍有余量、且本地连接池等待超时时,才调大对应的 Web 或 Worker 池。
增加进程时
每增加一个 Web 进程,会增加一套 Web 主库池、最多一套 Workbook 池和一个LISTEN/NOTIFY 连接。每增加一个 Worker 进程,会增加一套 Worker 主库池和最多一套 Workbook 池。
调整顺序建议是:缩短事务、降低后台并发、调整对应角色的连接池,最后才提高 PostgreSQL 上限。始终为迁移和人工排障保留至少 10 个连接。
完整配置参考
完整配置参考
所有配置都是静态环境变量,修改后需要重启对应进程。
Web 和 Worker 的池容量分别配置;等待和回收时间由两类进程共用。所有池参数必须为非负数,且 Workbook 必须满足
0 <= MIN <= MAX。精确计算连接上限
精确计算连接上限
B 表示启用 Workbook 时的 AT_WORKBOOK_POOL_MAX,未启用时为 0。max_connections 减去 reserved_connections 和 superuser_reserved_connections。查看连接占用
查看连接占用
查看 PostgreSQL 上限:查看连接来源和长事务:查看容器日志:
使用外部 PostgreSQL 时,以数据库服务商提供的实际连接上限为准,AskTable 不会自动修改它。
