NoClassDefFoundError в веб-приложении под большой нагрузкой - PullRequest
1 голос
/ 27 декабря 2011

Я выполняю нагрузочные тесты в своем веб-приложении java, работаю в tomcat 7 с разъемом NiO, симулирую 1000 пользователей, работающих одновременно, и я получаю неожиданный результат - приложение переходит в полностью непригодное состояние, оно выдает ошибку пользователя со статусом 500 и NoClassDefFoundError для разных классов приложения, например контроллеров MVC и других.

Похоже, кот почему-то почему-то "разворачивает".

Есть ли у вас мысли, как это исправить и что может быть источником проблемы?

Ответы [ 3 ]

3 голосов
/ 27 декабря 2011

(Это уточнение ответа Питера Лори)

Одной из распространенных причин исключений NoClassDefFoundError является попытка загрузить класс, для которого ранее произошла ошибка загрузки класса, или что зависит от класса, который ранее не смог загрузить класс.

Если это то, что происходит, трассировка стека для последующих исключений NoClassDefFoundError, как правило, неинформативна. Истинную причину проблемы обычно можно найти в более раннем событии журнала.


Я сомневаюсь, что Tomcat автоматически уничтожает вещи. Если бы это было так, я бы ожидал, что другие симптомы. (Даже если Tomcat что-то отменяет, JVM выгружает класс, только если он более недоступен. И любая попытка загрузить какой-либо другой класс, который зависит от выгруженного класса, приведет к загрузке новой копии из пути к классам.)

Что касается источника проблемы, есть большая вероятность того, что у вас есть проблема в статической инициализации вашего приложения. Вы настроили webapp для ленивой загрузки некоторых сервлетов?

1 голос
/ 27 декабря 2011

Вы можете получить эту ошибку, если класс не был загружен ранее. Истинная ошибка может быть более информативной.

0 голосов
/ 27 декабря 2011

может быть, он не может принять нагрузку ... вы пытались уменьшить количество одновременных пользователей? попробуй другой коннектор ajp vs http? с нио / био? тесты включают в себя операции ввода-вывода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...