草庐IT

ruby-on-rails - Redis flushall 命令被随机调用

我在生产中有一个使用sidekiq(使用redis)的ruby​​应用程序,我设法发现正在调用flushall命令,这会导致数据库被删除(从而删除所有已处理和计划的作业)。我不知道或不明白是什么原因造成的。有谁知道我如何开始跟踪对flushall的调用?谢谢, 最佳答案 很可能您的Redis服务器在没有任何保护的情况下对公共(public)网络开放-这只是在招惹麻烦,因为任何人都可以连接并造成比FLUSHALL更大的破坏。如果是这种情况,至少在烧毁受感染的服务器后使用密码身份验证-攻击者可能已经获得了对您服务器操作系统的访问权限,并

ruby - 使用 God Gem 设置流程启动顺序

有没有可能让上帝依次启动两个过程?我正在使用依赖于Redis的Sidekiq。我想启动Redis,然后启动Sidekiq,我设置了两个独立的watch,它们可以独立工作,但是当我运行时:$god-c"./config.god"-D看来是大神同时启动,导致Sidekiq无法连接到Redis服务器报错。我的上帝配置文件如下:#config.godPROJECT_ROOT=ENV['PROJECT_ROOT']||"/Path/to/app"God.watchdo|w|w.name="redis-server"w.group='conversion-api'w.interval=30.sec

android - 使用 Redis 服务器将数据从 android 发布到 rails

我们想要实现简单但高效的系统,以将并发数据从android应用程序发布到rails服务器。从多个android设备发送[post]的数据,将同时超过300。要实现这一目标,sidekiq可能是最佳选择。https://github.com/mperham/sidekiq/wiki/FAQ#how-do-i-push-a-job-to-sidekiq-without-ruby我正在尝试通过Android应用程序将数据发布到Redis以异步处理它,然后将其发送到Rails应用程序和数据库。有谁知道实现这个的确切过程?它是异步处理请求的最佳解决方案吗? 最佳答案

ruby-on-rails - Sidekiq 作业已安排,未运行,只是消失了

我正在开发一个使用Sidekiq和Mandrill在后台发送电子邮件的Rails应用程序。在我的应用程序中,我有2个队列,一个用于用户与我的服务交互(无关),第二个是邮件队列。邮件队列由2个邮件程序使用:一个用于管理用户配置文件,另一个用于与我们的服务交互(无关)。今天我注意到除了Devise发送的确认电子邮件外,用户已经好几天没有收到电子邮件了。另一个队列工作正常,没有任何问题。(所以也许Sidekiq配置不是问题)。例如,让我们以通知用户配置文件更新成功的UserMailer为例:user_mailer.rbdefupdate_user(user)@user=usermail(:t

ruby-on-rails - 由于 Phusion Passenger 队列阻塞导致 Web 服务负载过重

我们正在使用Ruby2onRails4、Mongoid4、MongoDB2.6开发Web服务。它使用Sidekiq3.3.0和Redis2.8,并在PhusionPassenger5.0.4+Nginx1.7.10上运行。它仅通过JSONAPI为移动客户端和AngularJS网络客户端提供服务。通常一切正常,API处理和响应不到1秒。但在高峰时段,服务负载很重(API呈现为503ServiceUnavailable)。下面是我们的Nginx和Mongoid配置:Nginx配置passenger_root/home/deployer/.rvm/gems/ruby-2.1.3/gems/p

ruby-on-rails - Sidekiq在处理大数据时处理重新排队

请参阅下面更新的问题。原始问题:在我当前的Rails项目中,我需要解析大型xml/csv数据文件并将其保存到mongodb中。现在我使用以下步骤:接收用户上传的文件,将数据存入mongodb使用sidekiq对mongodb中的数据进行异步处理。处理完成后,删除原始数据。对于本地主机中的中小型数据,上述步骤运行良好。但是在heroku中,我使用hirefire来动态地上下扩展workerdyno。当worker仍在处理大数据时,hirefire看到空队列并缩减workerdyno。这会向进程发送终止信号,并使进程处于未完成状态。我正在寻找一种更好的解析方法,允许解析进程随时终止(在收到

mysql - 如何避免记录付款和运行余额的 Rails 模型中的竞争条件?

我有一个简单的模型,Payments,它有两个字段amount和running_balance。当一个新的payment记录被创建时,我们寻找它之前支付的running_balance,比如last_running_balance并保存last_running_balance+amount作为当前支付的running_balance。以下是我们实现Payments模型的三个失败尝试。为简单起见,假设之前的付款始终存在,并且id随着付款的创建而增加。尝试1:classPayments尝试2:classPayments尝试3:classPayments这些实现可能会导致系统出现竞争条件,因

mysql - ActiveRecord::StatementInvalid: Mysql2::Error: 超过锁定等待超时

在我的rails项目中,我使用sidekiq处理耗时任务,但是在sidekiq中记录了一个错误:ActiveRecord::StatementInvalid:Mysql2::Error:Lockwaittimeoutexceeded;tryrestartingtransaction:UPDATE`marker_layers`SET`show_fields`='title,desc',`sort_col`='title,desc',`updated_at`='2016-05-1707:36:02'WHERE`marker_layers`.`id`=16021210Processor:iZ

ruby-on-rails-4 - Sidekiq工作条件

在我的应用程序中,我有25个worker,它们被不同用户的操作随机使用。每个用户只允许同时进行一项(事件/忙碌)工作。它不能在Controller上被阻止,因为这个想法是不阻止Action创建。需要创建操作,但要保持一致,直到处理完同一用户的所有previos请求,然后才会为同一用户(重新)分配工作人员。如果与此同时,另一位用户请求创建工作,如果剩余24名工作人员中至少有一名可用,则应立即开始工作。有没有什么办法可以找到队列中的行并使用它的参数来构建处理条件?谢谢 最佳答案 您可以使用SidekiqUniqueJobs使用这种方法,

ruby-on-rails-4 - Sidekiq工作条件

在我的应用程序中,我有25个worker,它们被不同用户的操作随机使用。每个用户只允许同时进行一项(事件/忙碌)工作。它不能在Controller上被阻止,因为这个想法是不阻止Action创建。需要创建操作,但要保持一致,直到处理完同一用户的所有previos请求,然后才会为同一用户(重新)分配工作人员。如果与此同时,另一位用户请求创建工作,如果剩余24名工作人员中至少有一名可用,则应立即开始工作。有没有什么办法可以找到队列中的行并使用它的参数来构建处理条件?谢谢 最佳答案 您可以使用SidekiqUniqueJobs使用这种方法,