ruby-on-rails - sepa - localizar numero de celular por satelite gratis
Mi aplicación sigue creando conexiones de base de datos, ¿cómo puedo rastrear el motivo? (2)
Tengo una aplicación Ruby on Rails que se ejecuta en Heroku. Sigo recibiendo estos mensajes en el registro:
2015-05-05T16:11:14Z app[postgres.27102]: [AQUA] connection received: host=xx.xxx.xx.26 port=60278
2015-05-05T16:11:14Z app[postgres.27102]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:14Z app[postgres.27103]: [AQUA] connection received: host=xx.xxx.xx.26 port=60291
2015-05-05T16:11:14Z app[postgres.27103]: [AQUA] connection authorized: user=postgres database=postgres
2015-05-05T16:11:18Z app[postgres.27104]: [AQUA] connection received: host=xx.xxx.x.166 port=54180
2015-05-05T16:11:18Z app[postgres.27104]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:23Z app[postgres.27105]: [AQUA] connection received: host=xx.xxx.x.166 port=55488
2015-05-05T16:11:23Z app[postgres.27105]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:28Z app[postgres.27106]: [AQUA] connection received: host=xx.xxx.x.166 port=56774
2015-05-05T16:11:28Z app[postgres.27106]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:28Z app[postgres.27107]: [AQUA] connection received: host=xx.xxx.x.166 port=56854
2015-05-05T16:11:28Z app[postgres.27107]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:28Z app[postgres.27108]: [AQUA] connection received: host=xx.xxx.x.166 port=56885
2015-05-05T16:11:28Z app[postgres.27108]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:28Z app[postgres.27109]: [AQUA] connection received: host=xx.xxx.x.166 port=56912
2015-05-05T16:11:28Z app[postgres.27109]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:33Z app[postgres.27110]: [AQUA] connection received: host=xx.xxx.x.166 port=58039
2015-05-05T16:11:33Z app[postgres.27110]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:38Z app[postgres.27111]: [AQUA] connection received: host=xx.xxx.x.166 port=59387
2015-05-05T16:11:38Z app[postgres.27111]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:43Z app[postgres.27112]: [AQUA] connection received: host=xx.xxx.x.166 port=60944
2015-05-05T16:11:43Z app[postgres.27112]: [AQUA] connection authorized: user=postgres database=somedb
2015-05-05T16:11:14+00:00 app[heroku-postgres]: source=HEROKU_POSTGRESQL_AQUA sample#current_transaction=511990 sample#db_size=203303096bytes sample#tables=17 sample#active-connections=2 sample#waiting-connections=0 sample#index-cache-hit-rate=0.99997 sample#table-cache-hit-rate=0.94699 sample#load-avg-1m=0.14 sample#load-avg-5m=0.25 sample#load-avg-15m=0.24 sample#read-iops=0.1875 sample#write-iops=1 sample#memory-total=7629448kB sample#memory-free=428388kB sample#memory-cached=6784860kB sample#memory-postgres=171732kB
No puedo averiguar qué está causando esto. La aplicación ejecuta Cedar 10 stack, ruby 2.1.4, rails 3.2.11 y puma 2.11.2 con 3 trabajadores y 1 rosca. No está sucediendo en los entornos de desarrollo o puesta en escena, solo en Heroku.
En ejecución: select application_name from pg_stat_activity;
muestra:
application_name
---------------------------------
puma: cluster worker 2: 3 [app]
puma: cluster worker 1: 3 [app]
puma: cluster worker 0: 3 [app]
psql johnny interactive
Aquí está mi archivo de configuración de puma (los hilos mínimo y máximo son iguales a 1):
workers Integer(ENV[''PUMA_WORKERS''] || 3)
threads Integer(ENV[''MIN_THREADS''] || 1), Integer(ENV[''MAX_THREADS''] || 16)
preload_app!
rackup DefaultRackup
port ENV[''PORT''] || 3000
environment ENV[''RACK_ENV''] || ''development''
on_worker_boot do
# worker specific setup
ActiveSupport.on_load(:active_record) do
config = ActiveRecord::Base.configurations[Rails.env] ||
Rails.application.config.database_configuration[Rails.env]
config[''pool''] = ENV[''MAX_THREADS''] || 16
ActiveRecord::Base.establish_connection(config)
end
end
¿Alguna idea sobre cómo rastrear esto?
Actualización : agregué un mensaje de depuración al bloque on_worker_boot
y solo se invoca en el inicio de la aplicación, así que todavía no tengo idea de por qué las conexiones se establecen con tanta frecuencia.
No he trabajado con Heroku, pero ¿has intentado obtener un volcado de hilos del proceso ruby utilizando una herramienta como la radiografía? http://blog.pivotal.io/labs/labs/inspect-running-ruby-processes-using-xray-and-kill-3
La pila de hilos puede ayudar a señalar el origen de estas llamadas.
Se trata de registros casuales sobre establecer conexión con Postgres. Entonces, simplemente ignórelos o intente deshabilitarlos en postgresql.conf
(vea la opción log_connections
), pero no creo que tenga acceso a ellos en Heroku.