繁体   English   中英

Rails:Sidekiq有时“向下” - 不处理请求。 我们可以通过Sidekiq发送请求的限制吗?

[英]Rails: Sidekiq is sometimes “down” - doesn't process requests. Is there a limit of request we can send through Sidekiq?

我们在几周前添加了监控系统中用户活动的内容,如下所示:

class ApplicationController < ActionController::Base
  before_filter :log_request

  def log_request
    params_to_parse = params
    all_params      = params.except(:controller, :action).inspect.gsub("✓", "")
    RequestLoggerWorker.perform_async(params[:controller], 
                                      params[:action], 
                                      (current_admin.nil? ? nil : current_admin.id), 
                                      request.method, 
                                      ...)
  end
end

Sidekiq方法:

class RequestLoggerWorker
  include Sidekiq::Worker

  def perform(...)
    ActivityLog.create(admin_id:        admin_id,
                       controller_log:  controller,
                       ...)
  end
end

通过这种机制,我们每天可以节省4000次点击。 这部分似乎运作良好。

但是,我们注意到,自从我们实施这个Sidekiq以来已经停电 - 今天早上两次。 我们使用Sidekiq的操作未得到处理。

我需要登录我们的Ubuntu服务器(AWS EC2)并手动运行Sidekiq( RAILS_ENV=production bundle exec sidekiq )。

什么导致关闭Sidekiq? 我正在努力研究这个问题,但到目前为止我还没有成功。

我们的Sidekiq配置( config/initializers/sidekiq.rb ):

  Sidekiq.configure_server do |config|
    config.redis = { url:       "redis://deployer_redis@IP:6379/#{env_num}", 
                     namespace: "sidekiq_myapp_com_#{Rails.env}" }
  end

  Sidekiq.configure_client do |config|
    config.redis = { url:       "redis://deployer_redis@IP:6379/#{env_num}", 
                     namespace: "sidekiq_myapp_com_#{Rails.env}" }
  end

作为临时解决方案,我需要在今天早上关闭活动记录机制。

我们将不胜感激。

谢谢。

您没有启动Sidekiq作为适当的系统服务,因此它全天候运行。 您需要将Sidekiq集成到Ubuntu的Upstart配置中。

https://github.com/mperham/sidekiq/wiki/Deployment#daemonization https://github.com/mperham/sidekiq/tree/master/examples/upstart

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM