2014-01-13 2 views
0

Мы используем ниже код для получения трансакции, однако в последний раз требуется слишком много времени (в течение более чем 10 минут) в производственной среде, где у нас будет несколько запросов, поступающих на тот же сервис. Может ли кто-нибудь объяснить возможную причину такого поведения.Высокое время отклика для открытия tranasactionn

final DefaultTransactionDefinition def = new DefaultTransactionDefinition(); 
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); 
transStatus = txManager.getTransaction(def); 

txManager имеет тип DataSourceTransactionManager, и мы используем базу данных DB2 с WebSphere сервера 6.1.

+0

Вы проверили размер пула соединений, чем он оказался? –

+0

Максимальное количество соединений - 50, которое должно быть достаточным для обработки нагрузки, поскольку у нас есть еще одна JVM, и там же счетчик работал нормально. – Raj

ответ

0

Вы используете пул соединений? Согласно javadoc, этот менеджер транзакций требует один.

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

+0

Да, мы используем пул соединений. однако максимальное количество соединений составляет 50, что должно быть достаточным для обработки нагрузки, поскольку у нас есть еще одна JVM, и там же счетчик отлично работает. – Raj

+0

Вы проверили с администраторами баз данных, есть ли там много соединений? Если они видят 50, откуда вы запускаете JVM, вы узнаете, что предел достигнут, что означает, что слишком много одновременных запросов или соединений просочились.Показать здесь, что администраторы баз данных DB2 и администраторы Websphere должны были сказать об этом, и любые ваши стеки (если они слишком длинны, они публикуются на пастебине), прямо сейчас есть слишком информация, чтобы видеть, что происходит. Существуют ли инструменты для профилирования, связанные с этой машиной, такие как visualvm? –

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