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 ответ:
Пожалуйста, подумайте о том, чтобы уменьшить время ожидания секунд ниже параметров, так как это может быть одним из способствующих факторов
1) inactiveConnectionTimeout
2) abandonedConnectionTimeout
Больше времени, потраченного на простаивающие соединения(как заимствованные, так и доступные), потребует больше памяти для хранения соединений.
При использовании веб-приложения это может косвенно привести к увеличению использования процессора из-за высокой загрузки памяти .
Пожалуйста, найдите ссылки ниже для получения дополнительной информации информация