我是 AWS 上的无服务器托管新手。我通过以下方式配置了一个可用的无服务器环境Laravel Vapor,但在高负载下会出现一些问题。
高负载是指几秒内有 10,000 个请求,所有请求都会对数据库进行更改。
我现在使用 PostgreSQL 数据库实例 (db.t3.micro),而不是无服务器版本,并且发现可以处理的请求存在一些限制: “SQLSTATE[08006] [7] FATAL: 剩余的连接槽保留用于非复制超级用户连接”
我该如何解决这个问题?用无服务器实例替换它还是扩展固定大小的 PostgreSQL?
队列本身是无服务器的吗?还是我可以专门为队列分配更多内存?还是将其与实例本身获得的内存相结合?
这是当前的 Vapor.yml 文件
id: ---
name: foobar-***
separate-vendor: true
environments:
staging:
warm: 10
scheduler: false
timeout: 60
memory: 1024
queue-memory: 2048
cli-memory: 512
cache: serverless
database: “database-***"
max_connections: 10000
balancer: “**-balancer"
runtime: php-7.4
build:
- "COMPOSER_MIRROR_PATH_REPOS=1 composer install"
- "php artisan event:cache"
- "php artisan migrate --force"
domain: "*.domain.app"
答案1
此错误与数据库的最大连接数有关。
打电话show max_connections;
询问这个限制是多少。t3.micro
根据 AWS 文档,这个限制是 112。
这将随着数据库实例的增大而自动增加,但是您可以覆盖参数组分配给 RDS 实例。
更改所拨打的号码,max_connctions
直到找到适合您的号码。