gpt4 book ai didi

http - 如何在 Erlang Web 服务器中处理非常大的文件上传?

转载 作者:可可西里 更新时间:2023-11-01 15:23:53 41 4
gpt4 key购买 nike

所以,假设我正在编写一个网络服务器,我想支持“非常大”的文件上传。让我们进一步假设我的意思是通过标准的 multipart/form-data MIME 类型来做到这一点。我应该说我正在使用 erlang 并且我计划收集从 erlang:decode_packet/2 返回的 http 数据包,但我不想在 http 请求之前实际收集请求主体处理程序已找到上传内容的位置。我应该

a) 继续收集尸体,忽略它可能非常非常大并因此可能由于内存不足而导致服务器崩溃的可能性?

b) 在处理 header 之前,不要在套接字上接收任何(可能不存在的)请求主体?

c) 做点别的?

答案 c 的示例可能是:产生另一个进程来收集上传的内容并将其写入临时位置(以最大限度地减少内存使用),同时将该位置提供给 http 请求处理程序以供将来处理。但我只是不知道 - 这里有标准技术吗?

最佳答案

在我看来选项 b 显然更好。

在您不读取套接字的时间段内,TCP 代码将继续在内核中缓冲传入数据。当它这样做时,它将向 HTTP 服务器通告越来越小的 TCP 窗口大小,直到最终(当内核中的 TCP 接收缓冲区已满时),TCP 窗口将关闭。

换句话说,通过不读取套接字,您允许 TCP 流量控制完成它的工作。

关于http - 如何在 Erlang Web 服务器中处理非常大的文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376925/

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