我们使用Zuul作为API网关。 当直接调用服务时,下载流很好,但是当通过Zuul调用时,它似乎首先将文件下载到zuul然后从那里流式传输。这适用于大文件下载,特别是在GB中运行时,文件下载仅在Zuul过滤器中读取整个文件后开始,这使我们使用非常大的堆大小和其他性能问题。 我们调试了代码,看起来问题发生在
期间private void writeResponse(InputStream zin, OutputStream out) throws Exception {
byte[] bytes = buffers.get();
int bytesRead = -1;
while ((bytesRead = zin.read(bytes)) != -1) {
out.write(bytes, 0, bytesRead);
}
}
在org.springframework.cloud.netflix.zuul.filters.post.SendResponseFilter中。 读取循环,直到整个文件。我尝试将请求发送为/ zuul / ... 但没有任何帮助,如果有出路,请告诉我?我们完全陷入困境。 我们正在使用" Dalston.SR2"释放。
答案 0 :(得分:0)
尝试此解决方案,这将禁用在Zuul端http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_uploading_files_through_zuul
中缓冲文件