我们的服务器正在使用clojure ring.adapter.jetty,我们的一个用户在上载约20MB的大文件时导致java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 200000/200000 ms
错误。他的连接速度很慢,但是我没有遇到相同的错误来限制我的连接。超时异常足够高(这是空闲超时,不是上载超时)
我们上传过程的快速版本是使用多部分表单,然后使用java.io.copy将临时文件复制到服务器文件夹。
我试图至少用我的机器重新创建错误,以使错误处理正常工作。如果找到任何更改我的应用程序代码的解决方案,则还需要通过尝试引起错误来对其进行测试。到目前为止,我尝试将速度限制为尽可能接近的零,并在devtools(chrome)中设置了超高延迟,并将码头超时设置为100ms,但仍然可以正常上传。
用户还能做些什么来帮助减少超时的机会。
答案 0 :(得分:0)
当连接上没有活动(配置的IdleTimeout的读取或写入)时,IdleTimeout就会触发。
对于您的用户,该连接在200,000毫秒(约3.3分钟)内没有任何活动,并且该连接已关闭。
3.3分钟对于移动网络来说实际上是一个很小的价值。
根据经验,您可能希望将其至少增加到300,000毫秒(或5分钟)。