我遇到了某种错误,在30秒超时后,服务器似乎再次收到该请求。
流程:
用户将几个(或多个)图像网址输入到发送到服务器的文本字段
sources = "mysite.com/1.jpg mysite.com/2.jpg mysite.com/1.jpg"
服务器按空格分割,每个网址都会创建一个新图像
sources.split(" ").map do |url|
Photo.create(source: url)
end
Photo是一个带有回形针附件的模型,名为img,是一个源列
存在self.img_remote_url = self.source
的after_action,以将源添加为附件的来源
请注意,我这里没有使用后台处理
问题从今天开始,但几天前它运作良好。 当图像数量导致请求超时时(因为处理时间超过30秒),就会发生这种情况。通常,它会继续处理服务器上的图像。现在,当超时发生时,从日志中看到,似乎再次收到请求,再次处理所有文件。
此时,(使用puma),第二个线程开始工作,但是再次,达到超时..这一直持续到所有线程,进程和dynos都已满并且无法再接收请求。然后处理完成,创建了多张照片并且非常不高兴程序员(我)
我不清楚为什么请求会重新发送到服务器。这不是客户端问题,因为复制不会立即发生,并且日志在发生超时错误时是正确的(H12)
我使用的是puma 2.9.1,ruby 2.1.3,rails 4.1.6,heroku cedar和最新的回形针。
超时时是否有任何导致请求重做的内容? 我该怎么调试呢? 可能是尚未发现的heroku路由机制中的错误吗?