J'ai un simple travail d'arrière-plan qui s'exécute en utilisant resque-pool qui effectue certains appels socksproxy. Cela fonctionne très bien quand je commence la resque piscine en mode développement Rails dès que je change le mode de production i frappé délai de connexion avec travail de fondDélai de connexion pour SOCKSProxy Appels en mode de production resque Rails
Le même code fonctionne lorsqu'il est exécuté dans
- Rails Console en production Mode
- de script Ruby autonome appelé à partir de la ligne de commande
appels sont quelque chose comme:
req = Net::HTTP::Get.new(uri.request_uri)
response = Net::HTTP.SOCKSProxy(@socks_server, @socks_port).start(uri.host, uri.port) do |http|
http.request(req)
end
Investigation:
lorsque cet appel se produit dans net/http.rb
TCPSocket.open(conn_address, conn_port, @local_host, @local_port)
j'ai trouvé que dans le processus de l'enfant en mode de production des travailleurs au lieu de chargement TCPSocket
classe de socksify-1.7.0/lib/socksify.rb
il se charge encore de rubis fourni resolv-replace.rb
. Je ne sais pas pourquoi.
erreur que je vois:
Délai de connexion dépassé - connect (2) pour le port "" 6455: /usr/lib/ruby/gems/2.1.0/gems/socksify-1.7.0/ lib/socksify.rb: 178: dans
initialize' /usr/lib/ruby/gems/2.1.0/gems/socksify-1.7.0/lib/socksify.rb:178:in
initialiser '/usr/lib/ruby/2.1.0/resolv-replace.rb:23:ininitialize' /usr/lib/ruby/2.1.0/net/http.rb:879:in
ouvrir' /usr/lib/ruby/2.1.0/net/ http.rb: 879: dansblock in connect' /usr/lib/ruby/2.1.0/timeout.rb:76:in
timeout ' /usr/lib/ruby/2.1.0/net/http.rb:878:inconnect' /usr/lib/ruby/2.1.0/net/http.rb:863:in
do_start' /usr/lib/ruby/2.1.0/net/http. rb: 852: dansstart' /usr/lib/ruby/2.1.0/net/http.rb:583:in
start ' /usr/lib/ruby/gems/2.1.0/ge ms/retries-0.0.5/lib/retries.rb: 46: danscall' /usr/lib/ruby/gems/2.1.0/gems/retries-0.0.5/lib/retries.rb:46:in
with_retries ' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/job.rb : 177: dansblock (3 levels) in perform' /usr/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/resque.rb:41:in
bloc dans around_perform_with_monitoring » /usr/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/controller_instrumentation.rb:363:in ` perform_action_with_newrelic_trace "bloc /usr/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/resque.rb:33:in
around_perform_with_monitoring' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/job.rb:176:in
(2 niveaux) en exécution ' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26. 0/lib/resque/job.rb: 172: danscall' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/job.rb:172:in
bloc (3 niveaux) dans effectuer '../app/jobs/resque_hooks.rb:15:inaround_perform_job_duration' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/job.rb:172:in
bloc (2 niveaux) dans effectuer' /usr /lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/job.rb:184:incall' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/job.rb:184:in
effectuer ' /usr/lib/ruby/gems/2.1.0/gems/ resque-1.26.0/lib/resque/worker.rb: 290: dansperform' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/worker.rb:229:in
bloc dans le travail ' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/worker .rb: 206: dansloop' /usr/lib/ruby/gems/2.1.0/gems/resque-1.26.0/lib/resque/worker.rb:206:in
travail ' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb: 396: dansblock in spawn_worker!' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:389:in
fourche ' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:389:inspawn_worker!' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:367:in
bloc dans spawn_missing_workers_for' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:366:intimes' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:366:in
spawn_missing_workers_for ' /usr/lib/ruby/gems/2.1 .0/gems/resque-pool-0.6.0/lib/resque/pool.rb: 352: dansblock in maintain_worker_count' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:350:in
chaque ' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6. 0/lib/resque/pool.rb: 350: dansmaintain_worker_count' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:263:in
start ' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool.rb:89 : enrun' /usr/lib/ruby/gems/2.1.0/gems/resque-pool-0.6.0/lib/resque/pool/tasks.rb:17:in
bloc (2 niveaux) dans ' /usr/lib/ruby/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:248:incall' /usr/lib/ruby/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:248:in
bloquer dans l'exécution' /usr /lib/ruby/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:243:ineach' /usr/lib/ruby/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:243:in
exécutez ' /usr/lib/ruby/gems/2.1.0/gems/ aérofrein-5.5.0/lib/aérofreins/râteau/task_ext.rb: 19: enexecute' /usr/lib/ruby/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:187:in
bloc dans invoke_with_call_chain' /usr/lib/ruby/2.1.0/monitor.rb:211:inmon_synchronize' /usr/lib/ruby/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:180:in
invoke_with_call_chain