spring boot 配置最大上传文件大小 在Linux环境下不生效问题

spring boot 配置最大上传文件大小 在Linux环境下不生效问题,第1张

Spring Boot 默认最大request size 为10MB(1048576 bytes)。

需要设置以下两个参数

Spring Boot 1.3.x或者之前

multipart.maxFileSize=100Mb

multipart.maxRequestSize=1000Mb

Spring Boot 1.4.x或者之后

spring.http.multipart.maxFileSize=100Mb

spring.http.multipart.maxRequestSize=1000Mb

很多人设置了multipart.maxFileSize但是不起作用,是因为1.4版本以上的配置改了,详见官方文档: spring boot 1.4

如果是前端发布到nginx下的还需要配置config/nginx.config

因为nginx默认最大上传大小为1M,所以要在service-name后面加上 client_max_body_size = 10M

参考: https://www.cnblogs.com/parasis/p/6422480.html

如果只是一次性的传输文件,推荐使用scp。

scp -l 带宽大小(单位Kbps) 文件名 远程用户名@远程IP

如将/home/user1/file拷贝到192.168.10.11上的user2主目录下,限速125KB/s(即限1Mbps带宽),命令为

scp -l 1000 /home/user1/file user2@192.168.10.11:~/

如果是做远程同步,就用rsync

rsync -auvzP --bwlimit=速度(KB/s) 本地文件 远程文件

Linux 进程通过 C 标准库中的内存分配函数 malloc 向系统申请内存,但是到真正与内核交互之间,其实还隔了一层,即内存分配管理器(memory allocator)。常见的内存分配器包括:ptmalloc(Glibc)、tcmalloc(Google)、jemalloc(FreeBSD)。MySQL 默认使用的是 glibc 的 ptmalloc 作为内存分配器。

内存分配器采用的是内存池的管理方式,处在用户程序层和内核层之间,它响应用户的分配请求,向 *** 作系统申请内存,然后将其返回给用户程序。

为了保持高效的分配,分配器通常会预先向 *** 作系统申请一块内存,当用户程序申请和释放内存的时候,分配器会将这些内存管理起来,并通过一些算法策略来判断是否将其返回给 *** 作系统。这样做的最大好处就是可以避免用户程序频繁的调用系统来进行内存分配,使用户程序在内存使用上更加高效快捷。

关于 ptmalloc 的内存分配原理,个人也不是非常了解,这里就不班门弄斧了,有兴趣的同学可以去看下华庭的《glibc 内存管理 ptmalloc 源代码分析》。

关于如何选择这三种内存分配器,网上资料大多都是推荐摒弃 glibc 原生的 ptmalloc,而改用 jemalloc 或者 tcmalloc 作为默认分配器。因为 ptmalloc 的主要问题其实是内存浪费、内存碎片、以及加锁导致的性能问题,而 jemalloc 与 tcmalloc 对于内存碎片、多线程处理优化的更好。

目前 jemalloc 应用于 Firefox、FaceBook 等,并且是 MariaDB、Redis、Tengine 默认推荐的内存分配器,而 tcmalloc 则应用于 WebKit、Chrome 等。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6200723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-17
下一篇2023-03-17

发表评论

登录后才能评论

评论列表(0条)

    保存