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()
{
  ServerContext context = ServerContext.get();
  con = context.getConnection();
}
У этого соединения autoCommit=false - commit вызывается после обработки всей цепочки устройств, если не произошло ошибок. Или можно самому вызывать con.commit(); Закрывать это соединение не нужно.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/