jetty6部署环境下,大文件上传超时后被重复上传问题的解决
2016-12-03 15:37
686 查看
写的后台管理系统一直有一个bug,就是上传一个文件到后台,对于需要较长时间处理的文件,超时后这个文件被再次上传。刚开始百思不得其解,还以为是Http请求本身的机制就是这样。这几天我从前台开始排查,找到JS里send()函数,断点监控前台是否多次send(),发现前台没有多次send()。
在后台解析上传文件调试时,突然爆出:
JVM BUG(s) - injecting delay1 times
JVM BUG(s) - recreating selector 1 times, cancelled keys 32 times
与此同时,文件被再次上传的响应启动了。好的,锁定bug.
经查,这个bug最开始是JAVA NIO的bug,Jetty 6中对其进行了处理具体处理的原则在https://wiki.eclipse.org/Jetty/Feature/JVM_NIO_Bug中有详细说明。
我在其中看到有这么一句话:
If cancelling keys does not avoid the JVM bugs, when the JVMBUG_THRESHOLD is reached, Jetty discards the entire select set and creates a new one.
意思是说Jetty在遇到JVM的这个bug时,并且超时已到,就会丢弃整个选择,然后重新创建一个选择。或许这就是导致我文件多次上传的原因。
在这篇帖子中:http://codefine.co/100.html,作者说在最新的jetty中已经把这个问题修正。我把我的jetty6升级到jetty 8,OK问题得以解决。
这个bug困扰我快半年了,一直找不到出错的原因,这几天集中精力把他解决掉,找到原因,也算有所获得,然而对于这个bug的细节,其实并未掌握,看来需要学习的地方还是很多的。
在后台解析上传文件调试时,突然爆出:
JVM BUG(s) - injecting delay1 times
JVM BUG(s) - recreating selector 1 times, cancelled keys 32 times
与此同时,文件被再次上传的响应启动了。好的,锁定bug.
经查,这个bug最开始是JAVA NIO的bug,Jetty 6中对其进行了处理具体处理的原则在https://wiki.eclipse.org/Jetty/Feature/JVM_NIO_Bug中有详细说明。
我在其中看到有这么一句话:
Recreating Selector
If cancelling keys does not avoid the JVM bugs, when the JVMBUG_THRESHOLD is reached, Jetty discards the entire select set and creates a new one.意思是说Jetty在遇到JVM的这个bug时,并且超时已到,就会丢弃整个选择,然后重新创建一个选择。或许这就是导致我文件多次上传的原因。
在这篇帖子中:http://codefine.co/100.html,作者说在最新的jetty中已经把这个问题修正。我把我的jetty6升级到jetty 8,OK问题得以解决。
这个bug困扰我快半年了,一直找不到出错的原因,这几天集中精力把他解决掉,找到原因,也算有所获得,然而对于这个bug的细节,其实并未掌握,看来需要学习的地方还是很多的。
相关文章推荐
- ThinkPHP中上传文件如何解决重复问题
- thinkphp 文件上传类wamp环境无法上传文件问题解决
- 解决WebView文件上传无法重复选择问题
- Thinkphp解决上传文件的重复问题
- 关于tomcat环境下上传大文件遇到的问题及解决办法
- nginx +phpfastcgi 环境下 导出excel文件,超时,数据被截断问题,解决
- 解决Tamcat重新部署删除临时上传文件的问题
- 解决IIS服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题
- javaWeb开发中关于eclipse等ide重新部署或重启项目等原因造成上传文件丢失问题解决方案
- springboot,feign上传超大文件,超时等问题解决方案
- 关于tomcat环境下上传大文件遇到的问题及解决办法
- 解决ASP.Net上传大文件超时或错误的问题
- 解决文件无法上传的问题,错误信息:System.IO.DirectoryNotFoundException: Could not find a part of the path.
- win2003上传文件不能超过200k问题解决方法
- 解决IIS6上传文件尺寸太小问题
- 怎么用asp解决上传音频视频文件问题
- 2003上传文件不能超过200k问题解决方法问题
- WebbUpload 1.1.0.0上传组件(解决.net下大文件上传问题)
- 一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)