我正在开发一个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的数量和大小也没有效果。
在此感谢任何帮助,谢谢。
答案 0 :(得分:-1)
问题是您的请求时间超过30秒且herokur's router is terminating the connection。
我认为一个很好的解决方案是对你的json响应进行分页,你可以遵循github的文档https://developer.github.com/v3/#pagination。