ruby-on-rails - 大型 JSON 负载 Rails、Heroku、Unicorn 上的机架超时

标签 ruby-on-rails ruby json heroku unicorn

我正在开发一个 Rails(4.2) 应用程序,该应用程序在接收大量 JSON 负载时偶尔会出现超时。 rack-timeout gem 表示应用程序在 Unicorn 中的以下代码块上超时(负责以 @socket 开头的行)。

/gems/unicorn-4.8.3/lib/unicorn/stream_input.rb:51:in kgio_wait_readable

     rv.replace(@rbuf.slice!(0, @rbuf.size))
         until to_read == 0 || eof? || (rv.size > 0 && @chunked)
           @socket.kgio_read(to_read, @buf) or eof!
           filter_body(@rbuf, @buf)
           rv << @rbuf

这仅在生产中,上次发生时有效载荷是 42kb 的 json。即使在运行 unicorn 和运行相同的有效负载时,我也没有成功在本地复制它。在 heroku 上增加 dynos 的数量和大小也没有效果。

在此感谢任何帮助,谢谢。

最佳答案

问题是您的请求花费了超过 30 秒并且 herokur's router is terminating the connection .

我认为对您来说一个好的解决方案是对您的 json 响应进行分页,您可以遵循 github 的文档 https://developer.github.com/v3/#pagination .

关于ruby-on-rails - 大型 JSON 负载 Rails、Heroku、Unicorn 上的机架超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764704/

相关文章:

ruby-on-rails - 具有混合大小写列名称的小写方法名称

ruby-on-rails - !无法通过 Bundler Heroku Rails 安装 gems

ruby-on-rails - 在 Ruby on Rails 中是否有检查 session 是否为空且等于某个变量的函数?

ruby-on-rails - roo 库是否适用于 Ruby 2.0?

ruby - 如何在 EventMachine 实现中捕获异常?

jquery - 基于 json 数据重新排序 dom 元素的最佳方法

ruby-on-rails - 我如何运行所有 rake 任务?

ruby-on-rails - 列出子类在 Ruby 脚本/控制台中不起作用?

json - Elasticsearch - 从 json 响应中排除索引和类型

php - 如何在 Symfony 中解析这个 JSON 对象