Kok*_*zzu 4 postgresql scalability
我们有使用Golang、PostgreSQL和sqlx(适配器、连接池)的Web 应用程序,每个请求需要 1 到 8 个查询,有时 1 个事务需要 5-8 个选择和 5-8 个插入查询。
我们已经将 PostgreSQL 设置max_connections
为 1024,然后是 4096,但是它开始交换,所以我们将它们减少到 64(这是交换前的限制)。
我们的 RAM 是 2GB,我们将 PostgreSQL 配置working_mem
为 16MB、temp_buffers
8MB、shared_buffers
800MB、effective_cache_size
1536MB(这个配置根本不交换)。
每天 00:00 到 02:35 每秒大约有 18 个请求,每秒大约有 8 个错误,此时每小时只有 10 个事务成功,其他事务失败,错误消息如下:
除了缓存只读页面(因为页面每分钟可以更新10次左右)或升级机器之外,如何克服这个问题?
max_connections = 1024
?!您需要一个连接池。
如果您的应用程序不支持内置池,请在事务池模式下使用 PgBouncer。
您正在小型玩具服务器上运行 PostgreSQL。保持低活动连接数并按顺序排列队列。
高会max_connections
导致显着的低效率,并且有大量活跃的工作连接会增加更多。
归档时间: |
|
查看次数: |
19520 次 |
最近记录: |