gpt4 book ai didi

java - 从 Web 服务下载大文件导致应用程序性能问题

转载 作者:行者123 更新时间:2023-11-30 10:37:01 24 4
gpt4 key购买 nike

我浏览了之前的帖子,也有人问过类似的问题,但我找不到解决问题的办法。在我的应用程序中,用户可以下载文件,因此当用户点击下载时,我们的应用程序服务器在内部设置与 Web 服务的经过身份验证的 session ,该 session 在 XML 响应中发送文件数据,如下所示:

<FileSerial xmlns="http://my.example.com/webservices">
<filedata>base64Binary</filedata>
<filesize>int</filesize>
<filetype>string</filetype>
<mime_type>string</mime_type>
</FileSerial>

我使用了 spring-ws 如下:

 GetDocResponse docResponse = (GetDocResponse) webServiceTemplate.marshalSendAndReceive(getDoc);
FileSerial fileSerial = docResponse.getGetDocResult();
fileByte = fileSerial.getFiledata();

在几个用户点击下载后,我们的应用服务器 JVM 内存变得非常高,应用服务器没有响应,必须重新启动。我的猜测是 fileByte 存储在我的应用程序服务器内存中,这是导致问题的原因。

有没有办法直接流到客户端浏览器而不存储在应用服务器内存中。

任何示例代码都会有所帮助。

最佳答案

您正在将完整的文档加载到您的堆上,加上到 base64 的转换。如果您不使用引用复制,则从您的二进制数据到其他对象的每个映射都会在您的堆上创建另一个条目。

您应该使用多部分请求并将文档作为您的 ws 请求的附件发送 MTOM example

关于java - 从 Web 服务下载大文件导致应用程序性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40289930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com