forum.bitel.ru http://forum.bitel.ru/ |
|
Синхронизация сервисов. Фейковые коннекшины. http://forum.bitel.ru/viewtopic.php?f=44&t=8644 |
Страница 1 из 1 |
Автор: | barguzin2 [ 30 окт 2013, 09:13 ] |
Заголовок сообщения: | Синхронизация сервисов. Фейковые коннекшины. |
Решил вынести в отдельную тему. Итак, еще раз. Есть дерево Код: *AA -Border(Netflow) --Shaper ---DHCP Relay ----Switch ----Switch ----Switch ----Switch Сервис активатор есть только у Shaper, у остальных - пусто(не указан в типах). ShaperServiceActivator - это SSH (1 в 1), наследованный от модифицироваyного AbstractTerminalServiceActivator (это так, для инфы, но на описываемую проблему не влияет). Нажимаю на Shaper - Синхронизировать сервисы. В логах вижу Код: connection 10-30/11:45:25 INFO [sa-p-12-t-17] ShaperServiceActivator - Connected connection 10-30/11:45:25 INFO [sa-p-12-t-9] ShaperServiceActivator - Connected connection 10-30/11:45:26 INFO [sa-p-12-t-25] ShaperServiceActivator - Connected connection 10-30/11:45:26 INFO [sa-p-12-t-10] ShaperServiceActivator - Connected connection 10-30/11:45:26 INFO [sa-p-12-t-14] ShaperServiceActivator - Connected connection 10-30/11:45:26 INFO [sa-p-12-t-13] ShaperServiceActivator - Connected connection 10-30/11:45:30 DEBUG [sa-p-12-t-17] ShaperServiceActivator - Disconnected connection 10-30/11:45:30 DEBUG [sa-p-12-t-9] ShaperServiceActivator - Disconnected connection 10-30/11:45:31 DEBUG [sa-p-12-t-25] ShaperServiceActivator - Disconnected connection 10-30/11:45:31 DEBUG [sa-p-12-t-10] ShaperServiceActivator - Disconnected connection 10-30/11:45:31 DEBUG [sa-p-12-t-14] ShaperServiceActivator - Disconnected connection 10-30/11:45:31 DEBUG [sa-p-12-t-13] ShaperServiceActivator - Disconnected connection 10-30/11:45:31 INFO [sa-p-12-t-4] ShaperServiceActivator - Connected connection 10-30/11:45:31 INFO [sa-p-12-t-4] ShaperServiceActivator - execute: some command connection 10-30/11:45:31 INFO [sa-p-12-t-4] ShaperServiceActivator - execute: some command connection 10-30/11:45:31 INFO [sa-p-12-t-4] ShaperServiceActivator - execute: some command connection 10-30/11:45:31 INFO [sa-p-12-t-2] ShaperServiceActivator - Connected ... Здесь идёт выполнение команд потоками [sa-p-12-t-2] и [sa-p-12-t-4] ... connection 10-30/11:45:36 DEBUG [sa-p-12-t-2] ShaperServiceActivator - Disconnected connection 10-30/11:45:37 DEBUG [sa-p-12-t-4] ShaperServiceActivator - Disconnected Итак, собственно ситуация. Зачем эти 6 предварительных И еще такой вопрос - кол-во рабочих коннектов будет всегда равно кол-ву дочерних устройств? или имеет какое-то ограничение, например задать его можно как-то через конфиг, чтобы 100500 коннектов не получить. |
Автор: | barguzin2 [ 18 ноя 2013, 09:21 ] |
Заголовок сообщения: | Re: Синхронизация сервисов. Фейковые коннекшины. |
Up! Прошу обратить внимание! Добавили больше 100 свичей - на шейпере вижу больше 100 пустых коннекшинов. Код: root pts/4 billing Mon Nov 18 12:17 - 12:17 (00:00) root pts/3 billing Mon Nov 18 12:17 - 12:17 (00:00) root pts/2 billing Mon Nov 18 12:17 - 12:17 (00:00) root pts/1 billing Mon Nov 18 12:17 - 12:17 (00:00) root pts/0 billing Mon Nov 18 12:17 - 12:17 (00:00) root pts/110 billing Mon Nov 18 12:17 - 12:17 (00:00) root pts/109 billing Mon Nov 18 12:17 - 12:17 (00:00) тут еще пучёк 2..108 root pts/1 billing Mon Nov 18 12:17 - 12:17 (00:00) root pts/0 billing Mon Nov 18 12:17 - 12:17 (00:00) P.S. это вывод команды last. В мессагах таже самая туча подключений. Итого 111 предварительных левых подключений (по общему количеству свичей), а потом 5 рабочих - по количеству свичей с привязанными к ним сервисами. |
Автор: | barguzin2 [ 03 дек 2013, 15:13 ] |
Заголовок сообщения: | Re: Синхронизация сервисов. Фейковые коннекшины. |
UP! Почему разработчики не обращают внимания на явный баг? В HD уже писал месяц назад - реакции ноль. За что деньги то платим ? |
Автор: | Amir [ 03 дек 2013, 15:46 ] |
Заголовок сообщения: | Re: Синхронизация сервисов. Фейковые коннекшины. |
Мы за исправление ошибок денег не берем. И абонплат у нас нет. Только за разработку и консультации. Кнопка синхронизировать сервисы не используется для штатной работы, которая подразумевает распределение нагрузки по времени, а не сразу скопом нагрузить все коммутаторы и устройства. Хотя можно раз в сутки запускать скриптом, если кажется, что при штатной работе не всегда коммутаторы нормально отрабатывают. Поэтому не вижу большой проблемы, что при ручной синхронизации так срабатывает. Рабочих потоков, а значит и соединений к Shaper будет не больше 100, если в дереве < 500 устройств, или не больше 200, если >= 500 устройств. И не больше, чем дочерних устройств. В ручную задать можно sa.thread.count= в корневом устройстве. Не рекомендую делать меньше 50, если коммутаторов >=50. Ошибка исправлена будет, но сейчас есть более важные задачи. |
Автор: | barguzin2 [ 03 дек 2013, 16:05 ] |
Заголовок сообщения: | Re: Синхронизация сервисов. Фейковые коннекшины. |
Фейковые коннекты вызываются что при ручной, что при нормальной ситуации (перезагрузка shaper). Цитата: Рабочих потоков, а значит и соединений к Shaper будет не больше 100, если в дереве < 500 устройств, или не больше 200, если >= 500 устройств. И не больше, чем дочерних устройств. Основное неудобство доставляют фейковые коннекты. Вот у меня 110 дочерних, получаю 111 фейковых, что будет когда дочерних будет 500 (а это скоро будет при переносе) - они сожрут все 300 выделенных con и вызовут overlimit со всеми вытекающими, а уже потом будут срабатывать ограничения на рабочие ? т.к. ваше описание для рабочих видимо на фейковые в этом случае не распространяется. |
Автор: | Amir [ 03 дек 2013, 16:27 ] |
Заголовок сообщения: | Re: Синхронизация сервисов. Фейковые коннекшины. |
Нет, там не может вызваться connect для Shaper более sa.thread.count(100/200) раз без вызовов disconnect. Т.е., например, sa.thread.count=3, кол-во Switch - 8: Код: connect1 connect2 - 3 потока, между connect и disconnect идут вызвовы serviceModify и т.п. для одной цепочки Switch-Shaper connect3 disconnect2 connect4 disconnect1 connect5 disconnect3 disconnect4 connect6 connect7 disconnect5 connect8 disconnect7 disconnect6 disconnect8 Еще вариант - использовать другой пул, с ограниченным количеством соединений, т.е. в методе connect при получении соединения к БД будет ожидание освобождения. Или можно попробовать использовать Semaphore, чтобы ограничить кол-во подключений к Shaper: Код: private static final Semaphore semaphore = new Semaphore( 10 ); acquire() будет ждать, пока активных соединений не станет меньше 10. Но с блокировками нужно быть осторожным - можно легко получить deadlock'и, если добавить не в том месте.
Object connect() { semaphore.acquire(); con = получение соединения; } Object disconnect() { освобождение соединения; semaphore.release(); } |
Автор: | Amir [ 03 дек 2013, 16:58 ] |
Заголовок сообщения: | Re: Синхронизация сервисов. Фейковые коннекшины. |
Или, чтобы вместо ограничения кол-ва соединений ограничить нагрузку на Shaper: Код: Object serviceModify() {
semaphore.acquire(); try { serviceModifyImpl(); } finally { semaphore.release(); } } Object serviceModifyImpl() { ... } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |