У нас периодически возникает проблема с DB2, используемой из пула соединений Glassfish. Что происходит, это:
В ситуациях, когда база данных (DB2 on ZOS) находится в состоянии стресса, наше приложение (многопоточное приложение, использующее соединения с DB2 через пул соединений Glassfish) перестает что-либо делать.
Наблюдаются следующие данные:
1) Глядя на сервер с помощью JConsole, мы видим поток, ожидающий бесконечно в методе драйвера DB2 getConnection (). Мы также можем видеть, что он получил блокировку вектора в драйвере. Несколько других потоков также вызывают метод getConnection () в драйвере и зависают в ожидании снятия блокировки на векторе.
2) Глядя на саму базу данных, мы видим, что есть соединения с сервера Glassfish, открытые и ожидающие использования. Похоже, что существует какое-то несоответствие между пулом соединений в Glassfish и соединениями, фактически открытыми для DB2.
Кто-нибудь сталкивался с этой проблемой раньше? Или что-то подобное? Если вам нужна дополнительная информация, которую я не предоставил, пожалуйста, дайте мне знать!