postgres guide español database_url activerecord heroku connection-pooling

activerecord - español - heroku postgres guide



Cómo aumentar el tamaño de la agrupación de hilos ActiveRecord en heroku (5)

Heroku ahora tiene un buen artículo sobre la administración de tamaños de https://devcenter.heroku.com/articles/concurrency-and-database-connections#connection-pool : https://devcenter.heroku.com/articles/concurrency-and-database-connections#connection-pool

Normalmente establecería el tamaño de la piscina como

development: adapter: postgresql encoding: unicode database: openkitchen_development username: rails host: localhost pool: 10 password:

en database.yml. Sin embargo heroku reemplaza el archivo de configuración. Estoy usando girl_friday para hacer trabajos de db de fondo y necesito aumentar el tamaño del grupo de subprocesos.


La respuesta de remvee llega al corazón de lo que se necesita, pero como su comando provocó que la consola se colgara, pensé en escribir cómo hacerlo manualmente.

heroku config

Busque la clave DATABASE_URL. Para este ejemplo digamos que es:

DATABASE_URL: mysql2://something.example.com/stuff?reconnect=true

Agregue "& pool = 10" al final de la URL (use & en lugar de? Porque la URL ya tiene un parámetro)

heroku config:add DATABASE_URL=mysql2://something.example.com/stuff?reconnect=true&pool=10


No es muy sencillo, pero puedes intentar crear tu propio buildpack.

Tendrás que ir al fork: https://github.com/heroku/heroku-buildpack-ruby

Luego modifique lo siguiente: https://github.com/heroku/heroku-buildpack-ruby/blob/master/lib/language_pack/ruby.rb#L325-387

Solo agrega el tamaño de piscina que requieras.

Luego puedes crear una nueva aplicación de Heroku con tu buildpack personalizado:

heroku create --stack cedar --buildpack https://github.com/yourgithubusername/heroku-buildpack-ruby.git

¡Eso debería ser!


Para su valor, Heroku no recomienda el uso del método de parámetros de URL como se describe en otras respuestas. Se reservan el derecho de restablecer o cambiar esta URL en cualquier momento y, a largo plazo, este comportamiento probablemente se eliminará para el comportamiento de compilación de Rails, de todos modos.

Establecer parámetros adicionales a través de una devolución de llamada después de la inicialización de la aplicación es la forma recomendada de modificar la configuración de sus bases de datos heroku-postgresql según este artículo del centro de desarrollo .

En config / initializers / database_connection.rb:

Rails.application.config.after_initialize do ActiveRecord::Base.connection_pool.disconnect! ActiveSupport.on_load(:active_record) do config = Rails.application.config.database_configuration[Rails.env] config[''pool''] = 10 ActiveRecord::Base.establish_connection(config) end end


Simplemente agregue un parámetro de consulta de pool a la DATABASE_URL en su configuración de heroku. Para establecer el tamaño de la piscina en 15 en tu aplicación heroku usa algo como:

heroku config -s | awk ''/^DATABASE_URL=/{print $0 "?pool=15"}'' | xargs heroku config:add