0

应用程序是 Rails 4.1.4,Ruby 2.1.2。

使用 sidekiq 3.2.6、redis 3.1.0、赛璐珞 0.15.2。除了连接到远程 redis 队列(弹性缓存)外,sidekiq 实现是默认的。

当处理某些事件时,我们使用 sidekiq 对外部 API 的调用进行排队。该 API 可通过 curl 从我们的应用程序所在的服务器访问。所有其他功能似乎仍按预期执行。此功能在当前的服务器实现/架构上已经工作了数周。

在成功部署(使用 Capistrano,通过 Jenkins)到 EC2 实例后,该实例位于弹性负载均衡器后面,自动扩展组 sidekiq 将不再连接(?)到弹性缓存。

SocketError: getaddrinfo: Name or service not known
/gems/redis-3.1.0/lib/redis/connection/ruby.rb:152 in getaddrinfo
/gems/redis-3.1.0/lib/redis/connection/ruby.rb:152 in connect
/gems/redis-3.1.0/lib/redis/connection/ruby.rb:211 in connect
/gems/redis-3.1.0/lib/redis/client.rb:304 in establish_connection
/gems/redis-3.1.0/lib/redis/client.rb:85 in block in connect
/gems/redis-3.1.0/lib/redis/client.rb:266 in with_reconnect
/gems/redis-3.1.0/lib/redis/client.rb:84 in connect
/gems/redis-3.1.0/lib/redis/client.rb:326 in ensure_connected
/gems/redis-3.1.0/lib/redis/client.rb:197 in block in process
/gems/redis-3.1.0/lib/redis/client.rb:279 in logging
/gems/redis-3.1.0/lib/redis/client.rb:196 in process
/gems/redis-3.1.0/lib/redis/client.rb:102 in call
/gems/redis-3.1.0/lib/redis.rb:1315 in block in smembers
/gems/redis-3.1.0/lib/redis.rb:37 in block in synchronize
/usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/monitor.rb:211 in mon_synchronize
/gems/redis-3.1.0/lib/redis.rb:37 in synchronize
/gems/redis-3.1.0/lib/redis.rb:1314 in smembers
/gems/sidekiq-3.2.6/lib/sidekiq/api.rb:557 in block in cleanup
/gems/connection_pool-2.0.0/lib/connection_pool.rb:58 in with
/gems/sidekiq-3.2.6/lib/sidekiq.rb:72 in redis
/gems/sidekiq-3.2.6/lib/sidekiq/api.rb:556 in cleanup
/gems/sidekiq-3.2.6/lib/sidekiq/api.rb:549 in initialize
/gems/sidekiq-3.2.6/lib/sidekiq/scheduled.rb:79 in new
/gems/sidekiq-3.2.6/lib/sidekiq/scheduled.rb:79 in poll_interval
/gems/sidekiq-3.2.6/lib/sidekiq/scheduled.rb:58 in block in poll
/gems/sidekiq-3.2.6/lib/sidekiq/util.rb:15 in watchdog
/gems/sidekiq-3.2.6/lib/sidekiq/scheduled.rb:23 in poll
/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25 in public_send
/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25 in dispatch
/gems/celluloid-0.15.2/lib/celluloid/calls.rb:122 in dispatch
/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322 in block in handle_message
/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416 in block in task
/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55 in block in initialize
/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13 in block in create

我们重启了 sidekiq,重启了弹性缓存,重启了服务器,用 redis-cli 检查了 redis 队列,没有发现任何值得注意的地方。

正如暗示的那样,我们可以使用 redis-cli 连接到弹性缓存,但是,sidekiq/api从控制台使用,我们得到相同的结果SocketError

关于如何补救的任何想法?该应用程序在这一点上几乎无法使用。

谢谢!

4

1 回答 1

1

是的,令人尴尬的错误!ENV var url 中有错字。10 小时后,在我和 devops 之间,这是一个复制和粘贴问题。

谢谢

于 2015-06-18T12:19:55.477 回答