发布媒体上传标注整体缓冲的性能隐患
- game_distribution_media.rs 在 Field::bytes() 处补 TODO(perf),说明峰值约 2× part 与 field.chunk() 流式限长改法
This commit is contained in:
@@ -175,6 +175,10 @@ async fn read_image_field(
|
||||
kind: MediaKind,
|
||||
) -> Result<UploadedImage, AppError> {
|
||||
let label = kind.label();
|
||||
// TODO(perf): `Field::bytes()` 会把整个 part 收成一个 `Bytes`,下面 `to_vec()` 再复制一份,
|
||||
// 峰值内存约 2× part;单个超大 part 会被完整缓冲后才在下面判 413。彻底做法是改
|
||||
// `field.chunk()` 循环累加,边收边按 `MAX_SINGLE_MEDIA_BYTES` 拒绝,并让 `UploadedImage.bytes`
|
||||
// 直接持有 `Vec<u8>`。当前保留现状,先在此标注。
|
||||
let bytes = field
|
||||
.bytes()
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user