Wildfly 8.1.0 Final зависает (держит соединения навсегда / канал был закрыт в середине чанка)
Я только что перенес приложение из JBoss 7.1.1 в Wildfly 8.1.0 Final. Но сейчас время от времени (как каждые 2 дня) Wildfly зависает, и мне приходится его перезагружать. Мое приложение в основном EJB/JPA/JAX-RS с Resteasy.
Под зависанием я подразумеваю, что каждый HTTP-доступ к Wildfly продолжает ждать вечно. Я подозреваю, что только Undertow заморожен, потому что я вижу в своем журнале приложений, что запланированные задачи выполняются, хотя ни одна из них не связана с сетью.
Я также заметил в своем журнале следующую ошибку: "Ответ принят, не может обработать исключение", вызванный IOException. "Канал был закрыт в середине чанка. Если вы пытались записать чанкованные данные, вы не можете закрыть канал до тех пор, пока он не будет завершен". написано".
Сервер - это виртуальная машина Ubuntu, работающая в Azure. "Физическая память" и "жесткий диск" в порядке. В соответствии с JVM Runtime в Wildfly Management использование кучи, не-кучи и потока нормально.
Единственное, что я заметил, это то, что у меня много связей, установленных навсегда, когда я "netstat -aln". У меня менее 100 клиентов в день, но сейчас я считаю 2K установленных соединений на моем порту 8080.
Что я могу сделать, чтобы лучше диагностировать и решить эту проблему?
С наилучшими пожеланиями, Ренан
ОБНОВЛЕНИЕ: это действительно была ошибка в 8.1.0, исправленная для 8.2.0, см. Мой ответ со ссылкой на проблему, открытую в JbossDeveloper.
3 ответа
Я хотел бы поделиться своим опытом в качестве разработчика / архитектора на Wildfly 8.1
Я перехожу с 7.1.1 на 8.1 на Windows/Eclipse несколько дней назад. Я также заметил некоторые нестабильности; член команды разработки выполнил миграцию и жалуется на сбои затмения / поведение, отличное от 7.1.1. Другой член команды все еще работает над Wildfly 8.0; похоже, что предыдущая версия более стабильна.
JBOss скажет вам, что Wildfly не является сервером производственных приложений; это для целей развития. Но я думаю, что вы указываете на серьезную ошибку / сходящуюся с моими подозрениями / без каких-либо реальных фактов и без ответа на ваш вопрос.
Вы должны направить свое сообщение непосредственно на форумы JBoss, чтобы быть уверенными, что команда Wildfly исследует проблему, и надеетесь, что это исправление будет частью 8.2 выпусков.
Я использовал wildfly 8.0 final с With Spring 4.1.0 и JSF 2.0 & JDK 8.0_u25. Я столкнулся с тем же исключением: UT005013: Возникла исключительная ситуация IOException: java.io.IOException: UT000029: Канал был закрыт в середине чанка, если вы пытались записать фрагментированные данные, которые вы не можете закрыть канал, пока все не будет записано.
И мой процессорный процессор сервера увеличивается на 25% каждый раз, когда происходит исключение. Alhumdulillah Теперь я решаю свою проблему.
Сейчас я использую: Wildfly 8.2.0 Final с Spring 4.1.0 и JSF 2.0 & JDK 8.0_u25
Wildfly 8.2.0 решает мою проблему с процессорной обработкой. Я наблюдаю за моим сервером почти 8 дней, затем я понимаю, что когда хост (клиент / пользователь) отправляет некоторый запрос на сервер, который требует некоторого времени для вычисления / отклика сервера, когда этот пользователь закрывает окно браузера или Выйдите из системы до получения ответа от сервера. когда Сервер завершил свою обработку, а затем попытался отправить ответ на свой конкретный запрос Host/Client, возникает IO Exception, поскольку клиент закрыл окно браузера.
Надеюсь, это поможет вам
Это была ошибка на 8.1.0, исправленная для 8.2.0: