背景
新上线一个项目,隔一段时间上传文件功能就报错了。本地测试没有复现问题,线上的项目重启后功能一切正常。但隔一段时间(几周到一个月)上传文件功能又不能使用了。
分析
一开始以为是编程没有考虑性能问题,导致项目运行一段时间会不会没有内存了?最后发现不是这个原因,判断依据有二
一是:整个项目只有上传文件功能报错,其他接口可以正常使用(说明是某个接口的问题,而不是整个系统的问题。如果是没有内存了,应该所有接口都不能使用)
二是:进入服务器使用:free -m命令,查看机器内存,发现内存还有
解决
查看线上项目的日志。发现错误原因是服务器上tmp文件没找到。在springboot 项目增加Tomcat配置,并在服务器上创建配置中的文件夹
错误原因:
springboot项目使用内嵌Tomcat,临时文件存放目录不配置,会默认放在linux服务器tmp文件夹下。系统使用的人多tmp文件夹会一直存在;如果系统使用人数不多,linux服务器会有脚本定期删除没有更新的tmp文件夹。删除后临时文件找不到存放目录就报错了。重启项目又会创建新的tmp文件夹
总结:
线上项目报错,错误原因一定要看日志。