java.net.SocketException: нет доступного буферного пространства (достигнуто максимальное количество соединений?): JVM_Bind
Tomcat запускает веб-приложение под Windows. Через несколько дней (при очень низкой нагрузке) в журналах начинает появляться исключение, упомянутое в заголовке, с этого момента новые соединения не могут быть установлены, единственное исправление - перезагрузка сервера.
Среда:
- Последний Tomcat 6
- Windows Server 2008 R2
- JDK 6 обновление 30
- SQL Server 2008
- Проверка подлинности Kerberos
Доказательства собраны до сих пор:
- netstat не показывает чрезмерного количества соединений
- ProcessExplorer не показывает чрезмерного количества дескрипторов открытых файлов
- Использование основной памяти системы среднее
- Среднее использование кучи JVM
- перезапуск Tomcat не решает проблему
Открытые вопросы:
- если бы мы пропускали соединения, разве они не должны появляться в netstat?
- не должен ли перезапуск сервера приложений решить проблему, потому что ОС должна освободить все ресурсы процесса?
- Есть ли способ отследить проблему до ее возникновения? Например, установка программного обеспечения для мониторинга, может быть, что-то похожее на lsof и т.д.?
Я вне идей, любые советы приветствуются!
3 ответа
Причина, по которой мы получили эту ошибку - ошибка в Windows Server 2008 R2 / Windows 7. Ядро пропускает петлевые сокеты из-за состояния гонки на компьютерах с более чем одним ядром, этот патч устраняет проблему: http://support.microsoft.com/kb/2577795
Я работал под управлением Alfresco Community 4.0d на 64-битной Windows 7 и имел те же симптомы и ошибки.
Проблема была исправлена патчем Microsoft: "Утечка в сокетах ядра на многопроцессорном компьютере под управлением Windows Server 2008 R2 или Windows 7" ( http://support.microsoft.com/kb/2577795) (т. Е. Ответ Buddy Casino (см. ниже)).
Еще одно замечание, которое я хотел бы добавить, заключается в том, что соединения Windows (Internet Explorer, Remote Desktop и т. Д.) Будут снова работать через 5-10 минут после закрытия служб Alfresco.
Alfresco - отличный продукт, и я боялся, что мне придется отказаться от него. К счастью, stackru пришел на помощь!
Еще раз спасибо за ответ казино друзей.
Бу человеку, который проголосовал за вопрос.
То же самое мы наблюдаем на аналогичной установке, W2008R2, Tomcat 6.0.29, Java 1.6.0.25. Перезапуск tomcat не помогает, но перезапуск самого сервера делает, по крайней мере, на некоторое время. После того, как в последний раз мы начали закрывать отдельные службы и считаем, что мы сузили его до экземпляра Alfresco, который также работает на сервере, или до служб Backup Exec Agent. После того, как эти службы (всего четыре) были остановлены, приложения в Tomcat снова начали работать, хотя мы все еще видели ошибку буфера / соединений в журнале stdout, что было странно. Нужно подождать, пока проблема вернется, прежде чем подтвердить, кто является виновником, что может быть от нескольких дней до недели или более.
Есть ли шанс, что вы запускаете Alfresco или BE на своем сервере?