Java UrlConnection在高负载下触发"连接重置"异常.为什么?

Rob*_*son 6 java concurrency networking amazon-s3 ioexception

我正在使用Java在Linux(Ubuntu 10)64位服务器上从Amazon S3流式传输文件.

我为每个文件使用一个单独的线程,每个文件打开一个HttpURLConnection下载并同时处理每个文件的文件.

一切都很美妙,直到我达到一定数量的流(通常约2-300个并发流).在此之后的不规则点,几个(比如10个)线程将同时开始出现java.net.IOException: Connection reset错误.

我限制了下载速度,并且低于m1.large实例的250mbit/s限制.所有其他服务器方面的负载也很小(例如CPU,负载平均值和内存使用率都很好).

可能导致这种情况的原因,或者我如何追踪它?

use*_*421 0

这里的问题主要出在你的语言上。高负载正在触发错误条件,并且错误条件会导致异常。反之则不然。