Oracle UCP высокая загрузка процессора на Java 1.7 + TC Server


Некоторое время назад мы перенесли одно из наших веб-приложений с Resin и Java 6 на VMware vFabric tc Server и Java 7. Это также включало перемещение всех источников данных JNDI из реализации Resin в Oracle UCP. Я заметил, что моя загрузка процессора чрезвычайно высока, когда я запускаю приложение локально. После прикрепления VisualVM, чтобы ТС я обнаружил, что это Оракул ОГП, который занимает много моего процессора:

Введите описание изображения здесь

Моя локальная Конфигурация: Windows 7x64, Java 1.7. 0_25x32 (JDK) и vfabric TC Server standard 2.7.0.ОСВОБОЖДАТЬ. Вот как я настраиваю источники данных в context.xml:

  <WatchedResource>WEB-INF/web.xml</WatchedResource>

  <Resource name="jdbc/oracle"
            auth="Container"
            factory="oracle.ucp.jdbc.PoolDataSourceImpl"
            type="oracle.ucp.jdbc.PoolDataSourceImpl"
            connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource"
            url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=h1.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=h2.com)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=SERVICENAME)))"
            user="user"
            password="password"
            minPoolSize="0"
            initialPoolSize="1"
            maxPoolSize="50"
            ONSConfiguration="nodes=h1:6200,h2:6200"
            connectionWaitTimeout="60"
            inactiveConnectionTimeout="900"
            abandonedConnectionTimeout="900"
            fastConnectionFailoverEnabled="false"
            validateConnectionOnBorrow="true"
            connectionPoolName="NAME"/>

Интересно, что на коробках prod все работает нормально. Я не знаю точной конфигурации, но у нас есть Fedora или CentOS, установленные на них и Hotspot 7.

Я пробовал стандартную реализацию Tomcat datasource, но в моем случае это не работает хорошо: соединение между моей локальной машиной и кластером БД очень нестабильно, поэтому для меня жизненно важно иметь автоматическое восстановление и балансировка нагрузки. Кроме того, я хочу, чтобы мой локальный конфиг был похож на prod, поэтому использование другого пула нежелательно.

Может быть, кто-то столкнулся с той же проблемой и знает решение? Может быть, какой-то JVM arg или родной библиотеки не хватает?

1 3

1 ответ:

Пожалуйста, подумайте о том, чтобы уменьшить время ожидания секунд ниже параметров, так как это может быть одним из способствующих факторов

1) inactiveConnectionTimeout

2) abandonedConnectionTimeout

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

При использовании веб-приложения это может косвенно привести к увеличению использования процессора из-за высокой загрузки памяти .

Пожалуйста, найдите ссылки ниже для получения дополнительной информации информация

Оптимизация Поведения Универсального Пула Соединений

CPU usage VS RAM