forum.bitel.ru http://forum.bitel.ru/ |
|
Pool [inet-access]: Connections limit is over!!!!! http://forum.bitel.ru/viewtopic.php?f=44&t=8691 |
Страница 1 из 1 |
Автор: | barguzin2 [ 18 ноя 2013, 09:13 ] |
Заголовок сообщения: | Pool [inet-access]: Connections limit is over!!!!! |
Решили вот Inet в продакшн выводить. Завели кучу девайсов, давим "Перечитать конфигурацию на серверах", в логах мелькают Код: mq 11-16/19:22:14 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload protocolHandler class for device: DES-3028: 0021919736 15 [172.16.112.138] mq 11-16/19:22:14 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload SA classes for device: DES-3028: 002191973615 [172.16. 112.138] mq 11-16/19:22:14 INFO [event-proc-p-2-t-1] SwSnmpServiceActivator - INIT такие сообщения для каждого свича и потом Код: mq 11-16/19:22:14 ERROR [event-proc-p-2-t-1] DefaultServerSetup - Pool [inet-access]: Connections limit is over!!!!! connection 11-16/19:22:36 ERROR [sa-p-12-t-24] DefaultServerSetup - Pool [inet-access]: Connections limit is over!!!!! connection 11-16/19:22:38 ERROR [sa-p-12-t-82] DefaultServerSetup - Pool [inet-access]: Connections limit is over!!!!! connection 11-16/19:23:02 ERROR [sa-p-12-t-50] DefaultServerSetup - Pool [inet-access]: Connections limit is over!!!!! Дальше Access перестает обрабатывать запросы и всё встаёт колом Код: 11-16/19:33:24 WARN [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! 11-16/19:33:24 WARN [InetRadiusListener] RadiusListener - Auth packet skipping. 11-16/19:24:32 ERROR [dhcpLstnr-p-10-t-6] InetDhcpProcessor - Lock wait timeout for ContractRuntime[2914]@310390892 access_status показыват Код: Connections pool to Master status Idle: 2; Active: 115; maxActive: 300; maxIdle: 20 если Перечитать конфигурацию на серверах, становится Active: 230, ну а еще раз нажать - становится 300 и вываливается по вышеописанному сценарию. |
Автор: | Cromeshnic [ 18 ноя 2013, 10:17 ] |
Заголовок сообщения: | Re: Pool [inet-access]: Connections limit is over!!!!! |
Какие у вас класссы - ServiceActivator-ы? Самописные? Скорее всего, для каждого коммутатора свой коннекшн заводится. |
Автор: | barguzin2 [ 18 ноя 2013, 10:32 ] |
Заголовок сообщения: | Re: Pool [inet-access]: Connections limit is over!!!!! |
Cromeshnic писал(а): Какие у вас класссы - ServiceActivator-ы? Самописные? Скорее всего, для каждого коммутатора свой коннекшн заводится. Коннекшн заводится в активаторе родительского устройства. Для коммутаторов используется немного модифицированный SnmpServiceActivator без получения коннекшинов. Нашел зацепку, но все равно непонятно. Перекликается с темой про фейковые коннекшины. Оказывает, при перечитывании конфигурации родительское устройство свичей Shaper (есть еще DHCP Relay, но он не в счет, он без SA) проходит N+1 раз инициализацию (где N - кол-во дочерних свичей, видел в логах вагон сообщений INIT/DESTROY SA-родителя), а там в функции init используется this.con = Setup.getSetup().getDBConnectionFromPool(); Вот это и сжирает коннекшины. Ну да ладно, думаю получение коннекта к базе и его закрытие будет логичней перенести в функции connect/disconnect (или как лучше ?), но опять же остается вопрос - нафига 100500+1 раз инициализировать родительское устройство? Если я перенесу получение/освобождение ДБ-коннектов в connect/disconnect, но их выжрут фейковые подключения из соседнего топика http://forum.bitel.ru/viewtopic.php?f=44&t=8644 |
Автор: | barguzin2 [ 03 дек 2013, 15:11 ] |
Заголовок сообщения: | Re: Pool [inet-access]: Connections limit is over!!!!! |
UP! |
Автор: | Amir [ 03 дек 2013, 15:23 ] |
Заголовок сообщения: | Re: Pool [inet-access]: Connections limit is over!!!!! |
Сделали получение соединения в connect() и его возвращение в disconnect()? init() и destroy() для парсинга конфигурации и освобождения других ресурсов, которые можно держать постоянно. Если бы с подключениями из соседнего топика действительно была глобальная проблема, то давно бы исправили. И писали бы об этой проблеме не только Вы. |
Автор: | barguzin2 [ 03 дек 2013, 15:56 ] |
Заголовок сообщения: | Re: Pool [inet-access]: Connections limit is over!!!!! |
да, сделал в connect/disconnect. Просто в основном у многих схема с RADIUS, где подключения как такового нету, поэтому и не выражается это ЯВНО. Либо девайсов немного. Спасибо за разъяснения. init/destroy не столь принципиально что массово вызываются. |
Автор: | Amir [ 03 дек 2013, 16:12 ] |
Заголовок сообщения: | Re: Pool [inet-access]: Connections limit is over!!!!! |
Там сейчас работает 100-200 потоков (sa.thread.count=), т.е. если использовать connect-disconnect, то будет открыто не более 100-200 соединений. Если же использовать в init-destroy, то столько, сколько устройств, а при перечитывании конфигурации какое-то время в два раза больше. Если получение соединения используется не только в Shaper, а не дополнительно и в Switch - в этом случае, соответственно, 200-400 - но это можно исправить, если получать соединение, привязанное к потоку: Код: connect() У этого соединения autoCommit=false - commit вызывается после обработки всей цепочки устройств, если не произошло ошибок. Или можно самому вызывать con.commit(); Закрывать это соединение не нужно.
{ ServerContext context = ServerContext.get(); con = context.getConnection(); } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |