BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 04:13

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 30 окт 2013, 09:13 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Решил вынести в отдельную тему. Итак, еще раз. Есть дерево
Код:
*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 предварительных ласк коннектов/дисконнектов, которые ничего не делают. Я их вижу в реальности на сервере шейпера. Причём 6 - это кол-во устройств вниз, начиная от шейпера - тут видимо как-то связано, т.к. если добавить еще свич - добавляется и пустой коннект. Далее идут два рабочих коннекта (т.к. сервисы только на двух свичах добавлены, тут все ровно), которые реально используются для выполнения команд.

И еще такой вопрос - кол-во рабочих коннектов будет всегда равно кол-ву дочерних устройств? или имеет какое-то ограничение, например задать его можно как-то через конфиг, чтобы 100500 коннектов не получить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 ноя 2013, 09:21 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
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 рабочих - по количеству свичей с привязанными к ним сервисами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2013, 15:13 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
UP! Почему разработчики не обращают внимания на явный баг? В HD уже писал месяц назад - реакции ноль. За что деньги то платим ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2013, 15:46 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Мы за исправление ошибок денег не берем. И абонплат у нас нет. Только за разработку и консультации.

Кнопка синхронизировать сервисы не используется для штатной работы, которая подразумевает распределение нагрузки по времени, а не сразу скопом нагрузить все коммутаторы и устройства. Хотя можно раз в сутки запускать скриптом, если кажется, что при штатной работе не всегда коммутаторы нормально отрабатывают. Поэтому не вижу большой проблемы, что при ручной синхронизации так срабатывает.

Рабочих потоков, а значит и соединений к Shaper будет не больше 100, если в дереве < 500 устройств, или не больше 200, если >= 500 устройств. И не больше, чем дочерних устройств.
В ручную задать можно sa.thread.count= в корневом устройстве. Не рекомендую делать меньше 50, если коммутаторов >=50.

Ошибка исправлена будет, но сейчас есть более важные задачи.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2013, 16:05 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Фейковые коннекты вызываются что при ручной, что при нормальной ситуации (перезагрузка shaper).

Цитата:
Рабочих потоков, а значит и соединений к Shaper будет не больше 100, если в дереве < 500 устройств, или не больше 200, если >= 500 устройств. И не больше, чем дочерних устройств.


Основное неудобство доставляют фейковые коннекты. Вот у меня 110 дочерних, получаю 111 фейковых, что будет когда дочерних будет 500 (а это скоро будет при переносе) - они сожрут все 300 выделенных con и вызовут overlimit со всеми вытекающими, а уже потом будут срабатывать ограничения на рабочие ? т.к. ваше описание для рабочих видимо на фейковые в этом случае не распространяется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2013, 16:27 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Нет, там не может вызваться 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 );

Object connect()
{
  semaphore.acquire();

  con = получение соединения;
}

Object disconnect()
{
  освобождение соединения;

  semaphore.release();
}
acquire() будет ждать, пока активных соединений не станет меньше 10. Но с блокировками нужно быть осторожным - можно легко получить deadlock'и, если добавить не в том месте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2013, 16:58 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Или, чтобы вместо ограничения кол-ва соединений ограничить нагрузку на Shaper:
Код:
Object serviceModify() {
  semaphore.acquire();
  try {
    serviceModifyImpl();
  } finally {
    semaphore.release();
  }
}

Object serviceModifyImpl()
{
  ...
}


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.040s | 29 Queries | GZIP : On ]