Активные и неактивные сеансы Oracle существуют даже после отключения системы - PullRequest
0 голосов
/ 31 октября 2019

Я работаю с веб-приложением Java, которое использует Hibernate 3. И Proxool для пула соединений. В основном это доза загрузки файлов, а примерная загрузка будет составлять 2000 загрузок файлов примерно 300 пользователями в час. И нагрузка становится выше в несколько раз. Я сталкиваюсь с проблемой большого количества активных и неактивных сеансов на стороне оракула, и даже после отключения системы (сервера wildfly) сеансы остаются такими, какими они были. Я проверил код, и он всегда закрывает сеанс гибернации в блоке finally. Моя настоящая проблема заключается в том, что количество сеансов на стороне оракула увеличивается, и мое приложение не может подключиться к базе данных через некоторое время.

Мой файл Proxool выглядит следующим образом

<proxool>
      <alias>piokms-conn</alias>
      <driver-url>jdbc:oracle:thin:@1.1.1.1:1521:orcl64</driver-url>  
      <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
      <driver-properties>
            <property name="user" value="test" />
            <property name="password" value="test" />
      </driver-properties>
      <autocommit>false</autocommit>
      <simultaneous-build-throttle>150</simultaneous-build-throttle>
      <minimum-connection-count>200</minimum-connection-count>
      <maximum-connection-count>800</maximum-connection-count>
      <maximum-connection-lifetime>1200000</maximum-connection-lifetime> 
      <maximum-active-time>600000</maximum-active-time>
      <house-keeping-test-sql>SELECT 1 From DUAL</house-keeping-test-sql>
      <statistics>5m,15m,1d</statistics>
      <statistics-log-level>ERROR</statistics-log-level>
      <fatal-sql-exception>Connection is closed,SQLSTATE=08003,Error opening socket. SQLSTATE=08S01,SQLSTATE=08S01</fatal-sql-exception>
      <fatal-sql-exception-wrapper-class>org.logicalcobwebs.proxool.FatalRuntimeException</fatal-sql-exception-wrapper-class>
      <verbose>false</verbose>
      <trace>true</trace>
 </proxool>

Пожалуйста, помогите мне решить эту проблему.

Спасибо

1 Ответ

1 голос
/ 31 октября 2019

Также я не знаком с самим proxool, ваше описание напомнило мне о поведении, наблюдаемом в различных платформах, где connection pool не был должным образом прекращен.

Согласно документации у вас есть два варианта:

  1. Используя ServletConfigurator
  2. Или вручную вызвать метод shutdown, когда ваш сервер завершит работу.

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


Я проверил код, и он всегдазакройте сеанс гибернации в блоке finally.

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

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