странное поведение соединения close_wait с использованием пула соединений wildfly с базой данных sybase
(используя wildfly 23, jpa и sybase в любой СУБД) У меня странное поведение в одной из наших производственных сред. Я немного растерян и был бы признателен за предложения о том, как решить эту проблему: в определенный момент времени, который мы не можем воспроизвести, соединения в источнике данных wildfly переходят в статус «close_wait». числа close_wait накапливаются экспоненциально до тех пор, пока пул не будет исчерпан, а приложение не будет заморожено и его не нужно будет закрыть.
Стоит отметить интересную вещь: у нас есть фоновый скрипт, выполняющийся каждую минуту и подсчитывающий количество соединений close_wait с использованием 'netstat -anl | греп 50000 | грэп CLOSE_WAIT | wc -l' (где 50000 — порт базы данных). На регулярной основе выходные данные этой учетной записи netstat равны 0. Внезапно, из-за того, что мы не можем подключиться к времени безотказной работы приложения, другим работающим сценариям использования и т. д., число счетчиков за считанные минуты подскакивает до сотен. close_wait (лимит пула у нас большой — около 500). Ниже приведен фрагмент журнала счетчика close_wait, чтобы показать, что через несколько минут счетчик начинает экспоненциально расти.
...
08:54 AM - 0[CLOSE_WAIT] connections were found.
08:55 AM - 0[CLOSE_WAIT] connections were found.
08:56 AM - 45[CLOSE_WAIT] connections were found.
08:58 AM - 136[CLOSE_WAIT] connections were found.
Прочитав некоторые сообщения о подобных проблемах, я понимаю, что для того, чтобы close_wait произошло, одной из сторон необходимо разорвать соединение. как определить на какой стороне? и какие причины могут «заставить» эту сторону захотеть закрыть соединение? это внезапно происходит посреди нормальной работы приложения... мы ценим вашу помощь...