大型JSON有效载荷Rails,Heroku,Unicorn上的机架超时

时间:2015-09-24 15:00:45

标签: 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。即使在运行独角兽并运行相同的有效载荷时,我也没有成功地在本地再现它。增加heroku上dynos的数量和大小也没有效果。

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

1 个答案:

答案 0 :(得分:-1)

问题是您的请求时间超过30秒且herokur's router is terminating the connection

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