长时间不上传文件,再次上传时报错

Blade 已结 2 1636
奥特曼大怪兽
奥特曼大怪兽 2021-01-18 09:54

一、该问题的重现步骤是什么?

1. 文件服务部署在Centos7上,运行一段时间后,再次上传文件时报错,只能重启文件服务才能正常上传。

2. 代码版本为bladex2.4.0

3.相关错误日志见附件

error-2021-01-12.txt


在群里咨询过这个问题,反馈说:这是springboot的机制,不是bug。另外bladex的oss和本地上传都没用临时目录上传,用不到这个机制。你如果需要的话,按照帖子内的解决办法配置一下就行


目前我使用的就是bladex的oss进行文件上传,为什么还会有这个错误,很尴尬


二、你期待的结果是什么?实际看到的又是什么?

文件上传成功,实际上传失败

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex2.4.0,centos7

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  •  北京智鼎优源
    2021-01-18 17:40

    20210120更新补充:


    修改生效了会尝试在 location: /data/app 路径下创建      undertow数字upload    的 上传临时文件(不是文件夹!!!!)。

    因为有了配置不会在尝试创建   undertow.数字.数字   文件夹了。


    未配置locantion时上传文件路径:

    会创建 Undertow.数字.数字 的文件夹,在之下再创建 undertow数字upload 临时文件。

    借用本帖楼主的报错日志,之前没有配置location的时候,上传文件的路径是:
    java.lang.RuntimeException: java.nio.file.NoSuchFileException:
     /tmp/undertow.2592299692229034893.8010/undertow4068960144003850988upload
     首先是/tmp/   之后是 一个Undertow.数字.数字 的文件夹   / 最后是  undertow数字upload 的临时文件

    配置locantion时上传文件路径:

    不会创建Undertow.数字.数字 的文件夹,会直接在location路径下创建 undertow数字upload 临时文件。

    因为测试时候我先删掉了 /data/app 的 app文件夹。看到报错信息如下:
    org.springframework.web.util.NestedServletException: Request processing failed;
    nested exception is java.lang.RuntimeException: java.nio.file.NoSuchFileException: /data/app/undertow8200788795301362756upload

    可以看到是没有 之前 Undertow.数字.数字 的文件夹了。应该是指认location 路径后不会再创建了。
    另外上传完 没有捕获到临时文件的创建痕迹,可能用完就删掉了。我没有本地debug断点跟踪,只是根据删掉 location路径看报错信息来找的临时文件创建路径。


    如果希望可以更有条理的管理上传文件夹路径,可以考虑修location   追加一级业务名称路径。(这么考虑是我不了解上传文件名的生成规则,同一台服务器上多个不同业务,并发上传时临时文件会不会重名导致意外错误。)

    location:/data/app/业务名



    20210119更新:

    参考1L提供的帖子,

    修改在(blade-service 下)自己业务模块 src/main/resource/application-dev/prod/test.yml配置文件

    添加上传路径 location(全路径:spring.servlet.multipart.location) 属性。避免不配置时,linux环境下使用默认的/tmp路径

    spring:
      servlet:
        multipart:
        
        ## 以下 配置可无视,根据自己需求修改 ##
          enabled: true
          file-size-threshold: 0
          #单个文件的大小
          max-file-size: 20MB
          ##请求中所有文件的大小
          max-request-size: 30MB
          ## 以上 配置可无视,根据自己需求修改 ##
          
          # 上传文件保存路径,如果没有配置会在 linux /tmp目录下存在被删掉可能性。导致上传文件功能失败报错。
          location: /data/app

    注意:该路径 /data/app 不会自动创建!如果路径不存在记得手动创建下!

    location: /data/app


    20210118:同样遇到这个问题。使用的Bladex 2.7.0.Release版本。上线时候一切OK 10多天后上传有这个错误。

    Centos服务器使用jar方式部署的。




    bladex-tools>blade-core-boot->blade-boot.yml配置文件里可以配置上传路径。但是没有配置。

      servlet:
        multipart:
          max-file-size: 256MB
          max-request-size: 1024MB




提交回复