- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个在 S3 上做很多工作的应用程序,主要是从它下载文件。我看到了很多此类错误,我想知道这是否是我的代码中的错误,或者服务是否真的像这样不可靠。
我用来从 S3 对象流中读取的代码如下:
public static final void write(InputStream stream, OutputStream output) {
byte[] buffer = new byte[1024];
int read = -1;
try {
while ((read = stream.read(buffer)) != -1) {
output.write(buffer, 0, read);
}
stream.close();
output.flush();
output.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
这个 OutputStream 是一个new BufferedOutputStream( new FileOutputStream( file ) )。我使用的是最新版本的 Amazon S3 Java 客户端,此调用在放弃之前重试了四次 次。因此,在尝试了 4 次之后仍然失败。
感谢任何关于我如何改进它的提示或技巧。
最佳答案
我刚刚设法克服了一个非常相似的问题。就我而言,我得到的异常是相同的;它发生在较大的文件上,但不会发生在小文件上,并且在单步执行调试器时根本不会发生。
问题的根本原因是 AmazonS3Client 对象在下载过程中被垃圾回收,导致网络连接中断。发生这种情况是因为我在每次调用加载文件时都构建了一个新的 AmazonS3Client 对象,而首选用例是创建一个持久的客户端对象,该对象在调用期间仍然存在 - 或者至少保证在整个调用过程中都存在下载。因此,简单的补救措施是确保保留对 AmazonS3Client 的引用,这样它就不会被 GC。
AWS 论坛上的一个链接对我有帮助:https://forums.aws.amazon.com/thread.jspa?threadID=83326
关于java - S3 Java 客户端多次失败,出现 "Premature end of Content-Length delimited message body"或 "java.net.SocketException Socket closed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952815/
我一直在为我正在编写的应用程序而苦苦挣扎,我想我开始发现我的问题是过早的优化。我的完美主义一面希望在第一次通过时就使一切变得最佳和完美,但我发现这使设计变得相当复杂。我倾向于编写尽可能多的功能以提高效
We should develop on slow boxen because it forces us to optimize early. Randall Hyde 在 The Fallacy o
编辑:回答:我需要为“einlesen()”函数创建另一个游标。 这是我第一次在 Python 中使用 SQLite3,所以请原谅我(也许)可怕的语法;)我正在尝试构建一种 DVD 数据库,它直接从亚
result_t work(resource_t& resource) { lock_t ___(resource); return work_impl(resource); } 是否
我正在构建一项新服务,当我 curl 它时,我看到一条消息 Curl_http_done:称为过早。我找不到任何关于它的含义的文档,想知道我的服务是否不符合某些 http 规范? ➜ ~ git:(
我使用 Web-flux/Reactive 和 Webclient,在 tomcat 和 spring-boot 上运行它。 一切正常。我阅读了很多关于它的信息。问题好像是每当你使用webclient
我正在尝试使用 Stream 下载 xml 文件,一切都很好,直到 xml 大小变得大于 9 MB,所以我收到此错误java.io.IOException:过早的 EOF 这是代码 BufferedI
我正在尝试使用 urllib2 和 zlib 以及来自这两个 stackoverflow 问题的技术在 python 中处理从互联网上提取的大型 gzip 文件: > Python decompres
我一直在使用 JDOM 库通过 Java Servlet 读写 XML 文件。 问题是,当我使用 AJAX 向读取和写入 XML 文件中的数据的 servlet 发送许多请求时,很多时候它无法显示错误
我正在开发一个使用 C++ 编写的大型服务器应用程序。该服务器可能需要运行数月而不重新启动。碎片在这里已经是一个可疑的问题,因为我们的内存消耗会随着时间的推移而增加。到目前为止,测量是将私有(priv
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我正在尝试通过套接字将图像文件从服务器发送到客户端。 套接字以前用于将一些字符串从服务器发送到客户端(使用缓冲的输入/输出流)。 问题是无法正确接收图像文件,出现“JPEG 文件过早结束”错误。 服务
出于某种原因,我收到了 HttpRequestException,其中包含消息“响应提前结束。我正在创建大约 500 个任务,这些任务使用我的 RateLimitedHttpClient 向网站发出请
我正在尝试使用阿尔卡特 OT900A 提交表单,但出现此错误 ava.io.IOException:损坏的表单数据:提前结束在 com.oreilly.servlet.multipart.Multip
当我尝试以这种方式解析来自网络的 XML 文件时: URL url = new URL("http://www.nbp.pl/kursy/xml/a074z120416.xml"); URLConne
我的代码有问题,但我不知道哪里出了问题。 我正在为客户编写应用程序。在启动画面期间,应用程序检查 Mysql 是否正在运行以便稍后能够连接到它。如果 mysql 处于打开状态,应用程序将继续启动。如果
import java.io.*; import com.lowagie.text.DocumentException; import org.xhtmlrenderer.pdf.ITextRende
我正在使用 OpenCV 从文件夹中读取图像。出现了很多这样的消息: Corrupt JPEG data: premature end of data segment Premature end of
这是有效的,但突然间我收到了这条错误消息。 “错误信息:脚本头过早结束:cust.php" "; echo "Back to main page"; } mysql_close(); ?> 请帮忙,提
项目开发中,链接mongodb的项目,偶尔报错com.mongodb.MongoSocketReadException: Prematurely reached end of stream 报错的详细
我是一名优秀的程序员,十分优秀!