2015-08-13 1 views
10

Я использую Wildfly 8.2 и запускаю ряд запросов БД при открытии определенной веб-страницы. Все запросы вызывают через API-интерфейс JPA, возвращают результаты как ожидалось - и - ни одно из них не выдает предупреждение, ошибку или исключение. Все это работает в Parallel Plesk.Невозможно заполнить пул (без буферного пространства)

Теперь я заметил, что в течение 2 - 3 дней появляется следующая ошибка, и сайт становится невосприимчивым. Я перезагружаюсь, и я жду около 3 дней, пока это не повторится (в зависимости от количества запросов, которые у меня есть). enter image description here

Я проверил tcpsndbuf на моем Linux-сервере, и я заметил, что он постоянно находится в макс. Если я не перезапущу Wildfly. По-видимому, он не может освободить соединения. enter image description here

Соединения управляются JPA/Hibernate и контейнером Wildfly. Я не занимаюсь специальной обработкой транзакций, например, открыто закрыто. и т. д. Я оставляю все это на Wildfly.

Драйвер MySQL я использую 5.1.21 (MySQL-разъем-Java-5.1.21-bin.jar)

В standalone.xml я определил следующие значения Datasource Datasource (среди прочих):

<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
<pool> 
    <min-pool-size>3</min-pool-size> 
    <max-pool-size>10</max-pool-size> 
</pool> 
<statement> 
    <prepared-statement-cache-size>32</prepared-statement-cache-size> 
    <shared-prepared-statements>true</shared-prepared-statements> 
</statement 

Кто-нибудь испытывает одинаковое повышение значений tcpsndbuf (или этой ошибки)? Сообщите, если вам требуется больше файлов конфигурации или журнала. Благодаря!


UPDATE Несмотря на следующие дополнительные настройки тайм-аута, он по-прежнему работает в ангаре. И таким образом, он будет использовать 100% процессорное время, когда достигнут максимальный tcpsndbuf. enter image description here, enter image description here

ответ

5

Попробуйте добавить это свойство Hibernate:

<property name="hibernate.connection.release_mode">after_transaction</property> 

По умолчанию JTA mandates that connection should be released after each statement, что нежелательно для большинства случаев применения. В большинстве случаев драйверы не позволяют мультиплексировать соединение по нескольким транзакциям XA.

+0

Nope. Это не помогло. Он растет одинаково. Я также заменил драйвер mysql - без успеха. – feder

3

Вы используете openvz? Я думаю, что этот вопрос следует задать на сервере. Это связано с конфигурацией linux. Вы можете читать: tcpsndbuf. Вы должны подсчитать открытые розетки и проверить состояние: UBC consistency check

+0

Нет. Я использовал панель управления Paralles. Ничего не помогло. Ни спящий режим release_mode, ни обновление драйвера mysql не работали. – feder

+0

Parallels Power Panel - это веб-инструмент для управления контейнерами openvz – sibnick

 Смежные вопросы

  • Нет связанных вопросов^_^