【发布时间】:2012-02-02 17:30:00
【问题描述】:
我在 Linux (Ubuntu 10) 64 位服务器上使用 Java 从 Amazon S3 流式传输文件。
我为每个文件使用单独的线程,每个文件都会打开一个HttpURLConnection,它会同时下载和处理每个文件。
在我达到一定数量的流(通常大约 2-300 个并发流)之前,一切都运行良好。在此之后的不规则时间点,多个(例如 10 个)线程将开始同时遇到java.net.IOException: Connection reset 错误。
我正在限制下载速度,并且远低于 m1.large 实例的 250mbit/s 限制。所有其他服务器方面的负载也微不足道(例如 CPU、平均负载和内存使用情况都很好)。
这可能是什么原因造成的,或者我怎样才能找到它?
【问题讨论】:
-
等一下,让我得到我的魔法 8 球 ;)
-
好吧,或者您可以提供任何经验或建议,非常感谢;)
-
可能是某个中间点限制了您的连接,比如公司防火墙。
-
不存在防火墙,服务器在 Amazon EC2 上,直接连接到 S3
-
由于您在 EC2 virt 上与 S3 通信,因此您应该将此问题发送给 Amazon 的 AWS 支持。您的连接断开可能有多种原因,他们可能能够通过他们可以访问的工具帮助您诊断问题。当您遇到可能的错误时,您可能还想获取一个 tcpdump 并查看那里是否有任何感兴趣的内容。
标签: java networking concurrency amazon-s3 ioexception