问题标签 [puma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
794 浏览

heroku - puma的积压设置类似于独角兽?

Unicorn 接受listen允许backlog在工作人员忙的情况下以毫秒为单位设置的配置。减小此值允许路由器在忙碌时将请求发送给另一个工作人员。

彪马有类似的东西吗?我找不到这样的东西。

这在 Heroku 上非常方便。

0 投票
2 回答
1667 浏览

ruby-on-rails - 在后端 Rails 应用程序中使用 Puma 和 Sidekiq

我有一个后端 Rails 服务器Sidekiq,它用作 API 服务器。该应用程序的工作原理如下:

  1. 我的 Rails 服务器同时接收来自传入 API 客户端的许多请求。

  2. 对于这些请求中的每一个,Rails 服务器都会将作业分配给 Sidekiq 服务器。Sidekiq 服务器向外部 API(如 Facebook)发出请求以获取数据,并对其进行分析并将结果返回给 Rails 服务器。

例如,如果我从我的 API 客户端收到 10 个传入请求,对于每个请求,我需要向外部 API 服务器发出 10 个请求,获取数据并进行处理。

我的挑战是让我的应用程序同时响应传入的请求。也就是说,对于每个传入的请求,我的应用程序应该并行处理:调用外部 API、获取数据并返回结果。

现在,我知道 Puma 可以为 Rails 应用程序添加并发性,而 Sidekiq 是多线程的。

我的问题是:如果我已经拥有 Puma,我真的需要 Sidekiq 吗?同时使用 Puma 和 Sidekiq 有什么好处?

特别是,使用 Puma,我只需从我的 Rails 应用程序调用我的外部 API 调用、数据处理等,它们将自动并发。

0 投票
1 回答
730 浏览

multithreading - 在 JRuby gem 中使用线程安全初始化

在 JRuby 中编写线程安全代码时,希望确保我们使用了正确的同步(并且仅是必要的);具体来说,在 Puma 实例化的 Rails 应用程序中。

更新:广泛重新编辑了这个问题,非常清楚并使用我们正在实施的最新代码。此代码使用atomic@headius (Charles Nutter) 为JRuby 编写的gem,但不确定它是否完全必要,或者以何种方式需要,对于我们在这里尝试做的事情。

这就是我们所得到的,这是过度杀伤(意思是,我们是否过度/超级工程化),或者可能不正确?

我们的宝石.rb:

客户端.rb:

上面的总结:我们有@@_clients(一个可变的类变量,持有一个客户端的哈希),我们只想为所有可用的服务填充一次,这些服务以 service_name 为键。

由于哈希在类变量中(因此是线程安全的?),我们是否保证__client每个服务名称的调用不会多次运行(即使 Puma 使用此类实例化多个线程以服务来自不同的所有请求用户)?如果类变量是线程安全的(以这种方式),那么也许Atomic.new({})是不必要的?

另外,我们应该改用 anAtomic.new(ThreadSafe::Hash)吗?或者,这不是必需的吗?

如果不需要(意思是:你认为我们至少Atomic.new需要 s,也许还需要s ThreadSafe::Hash),那么为什么第二个(或第三个等)线程不能在 s 之间中断,而Atomic.new(nil)每个线程中的 s 将每个创建两个(单独的)对象?@@_clients.update do ...Atomic.new

感谢您提供任何线程安全建议,我们在 SO 上没有看到任何直接解决此问题的问题。

0 投票
1 回答
880 浏览

ruby-on-rails - 验证活动连接!在 rails 4 中已弃用,我们应该如何处理该功能?

我一直在关注这篇文章来设置 puma 和工头:

https://www.digitalocean.com/community/articles/how-to-set-up-zero-downtime-rails-deploys-using-puma-and-foreman

puma 脚本verify_active_connections!在连接后说,但它在 rails 4 中不可用。注释掉方法调用将使脚本运行,但我不确定这是否会泄漏资源。

我能看到的关于这个问题的唯一文档是:

https://github.com/socialcast/resque-ensure-connected/issues/3

但是对于该怎么做还没有确凿的答案。我认为选项是要么省略它,rails 将在引擎盖下处理它,或者对每个运行的块进行验证。有人对该怎么做有真正的答案吗?谢谢。

0 投票
2 回答
9009 浏览

ruby-on-rails - 想在 Heroku 上使用 Redis (Redis::CannotConnectError (Error connected to Redis on 127.0.0.1:6379 (ECONNREFUSED)))

我想在 Heroku 上使用 Redis,但我收到了这个错误Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED))

我检查了这些,但没有得到帮助。 Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED将 redis 部署到 heroku 无法连接如何让 Redis 在 Heroku 上启动?.

我使用 Ruby 2.0.0p247 和 Rails4。我正在使用彪马。

我使用 RedisToGo(nano) 并且在 /config/initializers/redis.rb 中写了这个。

我检查了“REDISTOGO_URL”是我在$ heroku config.

我在 Heroku GUI 上重新启动了 Redis,但它不起作用。

请告诉我我需要做的任何事情。谢谢您的帮助。

0 投票
1 回答
572 浏览

ruby - Heroku 上的 ActionController::Live(Rails4)、Pub/Sub(Redis) 不起作用

我正在尝试在 Heroku 上使用 ActionController::Live, Pub/Sub(Redis),但它不起作用。我正在使用 Ruby2.0.0p247、Rails4、Puma。

我想做这样的聊天。RailsCast(http://railscasts.com/episodes/401-actioncontroller-live?view=asciicast),GitHub(https://github.com/railscasts/401-actioncontroller-live/tree/master/chatter-after

我的代码是这样的。

初学者消息控制器.rb

初学者消息.js.coffee

在本地主机上,它可以工作,但在 Heroku 上却不行。Puma 和 Redis 正在研究 Heroku。

我在网上搜索过,但没有任何帮助。请告诉我我应该怎么做。谢谢您的帮助。

0 投票
2 回答
1327 浏览

ruby-on-rails - 背景图片不显示。Rails 4,nginx,彪马

我正在按照此说明http://ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx/使用 puma 和 nginx 设置 rails(4.0.0) 应用程序。但是所有背景图片和一些js都不起作用。

my_app.conf

生产.rb

0 投票
1 回答
1753 浏览

ruby-on-rails - Puma 不会通过 SIGUSR1 信号重新启动

我有一个简单的 sinatra 应用程序,我在 nginx 后面的 jruby 上使用 puma 提供服务。

我已经启动并运行了我的示例应用程序并且工作正常。

我现在正尝试通过发送 SIGUSR1 信号手动重新启动 puma 服务器,如puma docs 中所述。但是,我没有导致服务器重新启动,而是开始收到 502 bad gateway 错误。nginx 日志显示:

因此,它不会重新启动,而是停止工作。以下是我发出 SIGUSR1 信号的方式:

此后不久,原始 puma 进程和用户定义的信号都自行消失了,如果我jobs -p再次运行,我什么也得不到。但是,套接字仍保留在 /var/run/mysockets/test_app.sock,我必须手动rm重新启动 puma。

我的问题是:为什么kill -s SIGUSR1 <pid>重启 puma 不起作用?我怎样才能让它工作?

谢谢!

0 投票
0 回答
208 浏览

ruby-on-rails - Rails 4 / Puma 应用程序中的响应时间飙升

我们在最近部署的 Rails 4.0 (Ruby 2.0.0) 应用程序上看到了一些奇怪的行为。我不在 Heroku 上,而是在 EC2 实例上。该应用程序使用 puma 和 hipache 来处理请求。

在大多数情况下,该应用程序非常快,平均响应时间约为 20 毫秒。但是,一旦达到一定数量的 RPM,响应时间就会急剧增加。我正在使用 New Relic 来跟踪响应时间,这是一个图表:

http://i.stack.imgur.com/pAIgT.png

你可以看到吞吐量甚至没有那么高,但是到了一定程度,有些东西正在崩溃。我不是 puma 配置方面的专家,但我尝试过使用不同数量的工人和线程,但似乎根本没有帮助。

我们在 EC2 上有一个大容量应用程序,在 Rails3/Ruby1.9.3/Unicorn 上运行良好,我很遗憾没有使用我所知道的工作,但在这一点上,我不能回到 Rails3,所以如果这正在响起钟声与任何人在那里我很想尝试一些事情。

0 投票
2 回答
2610 浏览

nginx - 使用 Capistrano 3、Nginx、Puma、GitHub 和 RVM 到 Amazon EC2 的 Rails 4 API 部署示例?

我在 GitHub 上有一个 Rails 4 API 项目,我正在尝试使用Capistrano 3将它从我的 MacBook Pro 部署到两个使用 SSH 密钥的 Amazon AWS EC2 Ubuntu 实例——一个是应用程序/Web 服务器,另一个是 PostgreSQL数据库服务器。应用程序/网络服务器通过 RVM 拥有最新的 Ruby 2,并将使用Nginx / Puma为 API 提供服务。Nginx 将托管多个站点,其中之一就是这个 API。这些是我正在使用的相关宝石:

  • gem 'capistrano', '~> 3.0.0'
  • 宝石'capistrano-rails'
  • 宝石'capistrano-bundler'
  • gem 'capistrano-rvm', '~> 0.0.2'
  • gem 'capistrano-puma',github:“seuros/capistrano-puma”

到目前为止,我还没有找到使用Puma的完整Capistrano 3配置示例,但与这两个 gem 对 Rails 社区一样重要,我确信 GitHub 上的某个地方必须有一个包含这些的可用 Rails 存储库。

我已经阅读了 Capistrano 3 官方文档。我对 Capistrano 2 和 Capistrano 3 之间的差异感到困惑,并希望看到一个完整的 Capistrano 3 示例以了解这些差异。理想情况下,我正在寻找一个开源 GitHub 存储库,该存储库已完成所有配置文件(Capistrano 3PumaNginx)并且可以参考。

谢谢!