C3p0 - ВНЕШНЯЯ БЛОКИРОВКА на MSSQL, но не на PostgreSQL или MySQL

Мы получаем подобные исключения

com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@5b7a7896 -- APPARENT DEADLOCK!!! Complete Status: 
Managed Threads: 3
Active Threads: 3
Active Tasks: 
    com.mchange.v2.c3p0.stmt.GooGooStatementCache$1StatementCloseTask@55bc5e2a (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
    com.mchange.v2.c3p0.stmt.GooGooStatementCache$1StatementCloseTask@41ca435f (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
    com.mchange.v2.c3p0.stmt.GooGooStatementCache$1StatementCloseTask@460d33b7 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
Pending Tasks: 

при нагрузочном тестировании нашего приложения на MSSQL 2008 R2 (jTDS или официальный MS JDBC значения не имеют) . Мы никогда не получим этого исключения при выполнении тех же тестов для PostgreSQL или MySQL .

Мы не просто хотим увеличить количество вспомогательных потоков для c3p0 (что решает проблему, но как долго?). Мы хотим знать, в чем проблема, поскольку она работает с другими СУБД ».

Приложения ведут себя следующим образом:

  • Отправить X-запросы
  • Подождать некоторое время -> DEADLOCK
  • Отправить X-запросы
  • Подождать некоторое время -> DEADLOCK

Кто-нибудь знает или имеет идею почему у нас такое поведение с MSSQL?

Спасибо, Адриан

(Кстати, BoneCP тоже работает без проблем.)

6
задан Adrian 23 January 2012 в 14:40
поделиться