Ответ 1
Как отмечено в комментариях выше, я не должен очищать рабочий каталог Tomcat во время его работы. Спасибо, ребята!
У нас есть два сервера tomcat, сбалансированные по нагрузке за apache. Несколько раз мы получили сообщения о ошибке 500 на странице. Проверка показывает следующую ошибку, но только на одном из кота:
java.lang.ClassNotFoundException: org.apache.jsp.jsps.userLogin_jsp
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
etc...
Я попытался очистить рабочий каталог и отредактировать страницу jsp, не повезло. Единственное, что решает, это перезапуск tomcat, но, очевидно, нам нужно избегать такого рода решений в производстве.
Кто-нибудь решил эту проблему раньше? Мой поиск только нашел вопросы без ответов, включая ошибку tomcat, которая была решена как "работает для меня": https://issues.apache.org/bugzilla/show_bug.cgi?id=30450
Я бы очень признателен за то, что у вас есть. Вот еще одна информация о проекте:
Спасибо!
Как отмечено в комментариях выше, я не должен очищать рабочий каталог Tomcat во время его работы. Спасибо, ребята!
Там был еще один экземпляр, который может вызвать подобные ситуации. У меня есть два приложения, развернутые в tomcat, и когда я развертываю третий, я начинаю наблюдать это поведение.
В этом конкретном случае я обнаружил, что tomcat с этими тремя приложениями открывает много файлов, и в этом случае требуется около 1600 файлов, открытых для работы (системные библиотеки, баннеры, временные файлы и т.д.). Когда в некоторых запросах он превышает 1024 по умолчанию максимальные открытые файлы, похоже, что некоторые файлы не могут быть открыты и у меня случайные странные ошибки (в том числе часто ClassNotFoundException в jsp-s). Все это зависит от того, как быстро я нажимаю эти приложения в окнах браузера, файлы открываются и закрываются очень быстро.
Это помогло мне, и я больше не вижу проблем с этим экземпляром:
ulimit -n 2048
Это может использоваться для наблюдения во время выполнения сервера, каково количество открытых файлов (если tomcat запущен как пользователь "tomcat" ):
while [ true ]; do lsof -u tomcat|wc -l; sleep 1s; done