У нас была эта проблема уже давно, я просто хотел уточнить некоторые вещи, касающиеся 2) в принятом выше ответе.
Итак, проблема здесь в том, что временные папки tomcat внезапно «исчезают», и не для «POST-сообщений в целом», как утверждается, а конкретно для составных запросов. Таким образом
spring.servlet.multipart.location/spring.http.multipart.location
здесь участвует. Как сказал @Frankstar выше, в недавнем коде весенней загрузки это исправлено путем «всегда создавать папку tmp, если ее там нет», конечно, тоже работает, если вы используете супер-свежую пружину -ботинок.
Вы можете, как было предложено в принятом ответе, указать его в другом месте, кроме /tmp, и он будет работать нормально (хотя, что касается очистки, вам, возможно, следует прочитать здесь https://github.com/spring-projects/spring-boot/issues/9983 — теперь вы полагаетесь на spring-boots очистки, которая, тем не менее, должна работать нормально).
Но почему папка на самом деле исчезла? Далее @Hasan Sawan говорит, что «это ошибка между серверами spring и tomcat». Но действительно ли..?
Для нас решение состояло в том, чтобы настроить этот материал. Такие ОС, как CentOS, будут использовать (см., например, https://www.thegeekdiary.com/centos-rhel-7-how-tmpfiles-clean-up-tmp-or-var-tmp-replacement-of-tmpwatch )) systemd для очистки /tmp — и все, к которым нет доступа в течение 10 дней, будут очищены по умолчанию.
Таким образом, на наших серверах RedHat мы решили, что это редактирование
/usr/lib/tmpfiles.d/tmp.conf
добавить строку типа
X /tmp/tomcat.*
чтобы решить эту проблему. Вы также можете проверить это, используя
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean 2>&1 | grep tomcat
где вы увидите, что эти каталоги теперь будут игнорироваться.
Также существует это исправление для систем, где вместо него используется tmpwatch https://javahotfix.blogspot.com/2019/03/spring-boot-micro-services-tmptomcat.html
Примечание: упомянутые выше решения для "перезагрузки" или просто # mkdir /tmp/tomcat.... просто не принимались там, где я работаю.
person
Ola Aronsson
schedule
26.07.2019