Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails并发和activejobs_Ruby On Rails_Sidekiq_Rails Activejob - Fatal编程技术网

Ruby on rails Rails并发和activejobs

Ruby on rails Rails并发和activejobs,ruby-on-rails,sidekiq,rails-activejob,Ruby On Rails,Sidekiq,Rails Activejob,以下是我对ActiveJobs的一些问题: 假设我已经通过ActiveJobs在sidekiq上的作业队列中排队了n个作业。在我的EC2上,我将puma设置为有4个工人,每个工人有5个线程。这是否意味着将同时运行多达20个并发作业?每个线程是否会在空闲时拾取一个排队的作业,然后只处理它?我尝试了这个设置,但它似乎仍然在一次处理一个串行作业。我还需要做更多的设置吗 关于并发性——我如何设置更多的EC2实例来处理作业队列本身 关于队列本身,我们是否有办法从Rails内部管理/查看队列?还是应该依靠s

以下是我对ActiveJobs的一些问题:

  • 假设我已经通过ActiveJobs在sidekiq上的作业队列中排队了n个作业。在我的EC2上,我将puma设置为有4个工人,每个工人有5个线程。这是否意味着将同时运行多达20个并发作业?每个线程是否会在空闲时拾取一个排队的作业,然后只处理它?我尝试了这个设置,但它似乎仍然在一次处理一个串行作业。我还需要做更多的设置吗

  • 关于并发性——我如何设置更多的EC2实例来处理作业队列本身

  • 关于队列本身,我们是否有办法从Rails内部管理/查看队列?还是应该依靠sidekiq的web界面查看队列

  • 赛德基有很好的表现。关于你的问题:

  • Sidekiq(和其他后台作业实现)的工作原理如下
    其中,
    producer
    是您的Rails应用程序,
    Queue
    -Redis和
    consumer
    -Sidekiq worker。这三个实体都是完全独立的应用程序,可以在不同的服务器上运行。所以,Puma和Rails应用程序都不能影响Sidekiq并发性
  • Sidekiq并发性描述远远超出了这个答案。你可以通过“扩展Sidekiq工作人员”来搜索大型帖子。简言之:是的,您可以运行单独的EC2实例并设置Redis和调优Sidekiq工作人员计数、每个工作人员的并发性、ruby运行时、队列并发性和优先级等。
    已编辑:Sidekiq具有每个工作人员的配置(通常为Sidekiq.yml)。但工人的数量是由系统工具管理的,比如Debian的Upstart。或者,您可以购买具有许多功能的Sidekiq Pro/Enterprise(如sidekiqswarm)
  • 从维基:

  • Puma设置根本不会影响sidekiq。Sidekiq有自己的并发设置。谢谢你,毕竟我找错了方向。维基很有帮助——还在努力,但在提出更多问题之前,我们会先做进一步的尝试。同样,知道所有的配置都在sidekiq端,至少为我指明了正确的方向。Cheers@JoelLim是的,Sidekiq具有每个工作人员的配置(通常是Sidekiq.yml)。但工人的数量是由系统工具管理的,比如Debian的Upstart。或者,您可以购买具有许多功能的Sidekiq Pro/Enterprise(如sidekiqswarm)。如果我的回答对你有帮助,你能把它标记为接受吗?