From 44abc0e91ee62727966e21932e1429741f4e8d56 Mon Sep 17 00:00:00 2001 From: Jesus Federico Date: Wed, 20 Jan 2021 17:25:49 -0500 Subject: [PATCH] GRN2-XX: Patch to overcome performance issues with the database. (#2454) --- config/database.yml | 4 +++- sample.env | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/config/database.yml b/config/database.yml index 2662a389..073153c1 100644 --- a/config/database.yml +++ b/config/database.yml @@ -1,5 +1,5 @@ default: &default - pool: 9 + pool: 5 timeout: 5000 development: @@ -22,3 +22,5 @@ production: username: <%= ENV['DB_USERNAME'] %> password: <%= ENV['DB_PASSWORD'] %> pool: <%= ENV['DB_POOL_SIZE'] || '9' %> + connect_timeout: <%= ENV['DB_CONNECT_TIMEOUT'] || '5' %> + read_timeout: <%= ENV['DB_READ_TIMEOUT'] || '120' %> diff --git a/sample.env b/sample.env index 7ab2c1d8..12a76e03 100644 --- a/sample.env +++ b/sample.env @@ -259,7 +259,7 @@ ENABLE_SSL=true # Database settings # # Greenlight may work out of the box with sqlite3, but for production it is recommended to use postgresql. -# In such case, these variables must be included. +# In such case, these variables must be included: # # DB_ADAPTER=postgresql # DB_HOST=postgres.example.com @@ -267,11 +267,19 @@ ENABLE_SSL=true # DB_NAME=greenlight_production # DB_USERNAME=postgres # DB_PASSWORD=password +# +# The ActionCable-Workers require 4 connections. So, when using postgres as the CABLE_ADAPTER +# make sure the Database can handle the overall connection count calculated as follows: +# ( RAILS_MAX_THREADS + 4 ) * WEB_CONCURRENCY +# So DB_POOL_SIZE should be set to RAILS_MAX_THREADS + 4 +# # DB_POOL_SIZE=9 # -# DB_POOL_SIZE should be set to RAILS_MAX_THREADS + 4 -# The ActionCable-Workers require 4 connections. -# Make sure your Database can handle the overall connection count calculated as follows: ( RAILS_MAX_THREADS + 4 ) * WEB_CONCURRENCY +# Additionally, there may be cases where the database has errors so the old db connections became stale. +# In order to overcome the lost of connections, it is recommended to add a timeout. +# +# DB_CONNECT_TIMEOUT=5 +# DB_READ_TIMEOUT=120 # # For deployments based on the docker-compose script also included, the HOST should be set with the Docker container id. # @@ -281,7 +289,6 @@ DB_PORT=5432 DB_NAME=greenlight_production DB_USERNAME=postgres DB_PASSWORD=password -DB_POOL_SIZE=9 # Use postgresql to handle ActionCable connections by default CABLE_ADAPTER=postgresql