Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 349
|
|
« : 06 Декабря 2012, 07:34:37 » |
|
Доброго времени суток, возникла необходимость распараллелить вычисления в ядре нодени. Дело в том что существенно повысился обрабатываемый траффик в сети и при достижении отметки в 3 гигабита информация с коллекторов перестает успевать обрабатываться ядром вовремя, возникают большие задержки до получаса. Ядро находится на отдельном сервере с 4 ядерным процессором, но возникает ситуация когда одно из ядер загружено процессом ядра на 100%, а остальные простаивают. Есть ли возможность как-то распараллелить по ядрам вычисления в ядре биллинга (простите за тафталогию)? Отключить подсчет трафика не вариант, какие могут быть выходы из положения?
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #1 : 06 Декабря 2012, 07:40:41 » |
|
только Nodeny+ старый ноденай однотредовый
|
|
|
Записан
|
|
|
|
Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 349
|
|
« Ответ #2 : 06 Декабря 2012, 07:59:56 » |
|
А без смены биллинга есть варианты, может можно вынести как-то обработку трафика отдельно на каждый сателит с отдачей ядру уже подсчитанных по сателиту данных? Может другие выходы из положения, надо как-то решить ситуацию не убив весь биллинг, установкой более мощного сервера задача уже не решается, проблема архитектуры старой версии. Nodeny+ я пока не готов удаленно ставить без подробной документации на живой сети, нужно решить без простоя в работе.
|
|
|
Записан
|
|
|
|
Andrey Zentavr
NoDeny
Старожил
Карма: 29
Offline
Сообщений: 301
|
|
« Ответ #3 : 06 Декабря 2012, 12:22:38 » |
|
Ух, Рико, я и мой товарищ задавались подобным вопросом тут тыц!У нас тоже такая проблема имеет место быть, и, что не удивительно, никакого решения нет, а есть пиар - используйте Nodeny 52 (который не известно на сколько стабильный). тут немного моих рассуждений: Если используются Perl threads (use threads;), то фактически для операционной системы мы имеем тот же один процесс на том же одном процессоре. В нашем случае нужно использовать fork(). Но тут всплывают особенности с открытыми дескрипторами соединений к базе данных, лог-файла и, возможно, чему-то ещё (я так глубоко ядро не ковырял). Пример - как-то вот так: https://wiki.bc.net/atl-conf/pages/viewpage.action?pageId=20548191Я даже что-то запустил, но видимо очень плохо переписал функции, что через некоторое время при завершении работы форка соединение с БД прерывалось.
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #4 : 06 Декабря 2012, 13:16:28 » |
|
а есть пиар - используйте Nodeny 52 (который не известно на сколько стабильный).
N52 вполне прилично работает вместо того что б глумится лутше бы взял и протестировал а потом висказывать своё фэ уже есть 55 ревизий N52 некоторие из них успешно роботают в реале
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #5 : 06 Декабря 2012, 13:18:17 » |
|
У нас тоже такая проблема имеет место быть, и, что не удивительно, никакого решения нет, а есть пиар - используйте Nodeny 52 (который не известно на сколько стабильный).
Какой в жопу пиар? Для кого я делал новый нодени? Чтоб, блять, пиариться ради бесплатного распространения? Я четко объясняю причины: - дофига людей просили новые фичи, в N50 их сделать невозможно либо большие костыли. Я начал делать и сделал новый. - я не могу поддерживать старый и новый одновременно - в этом нет смысла. - что это за, блять, отсылки к "неизвестно насколько стабильный"? Кто-то жаловался? Или я старый нодени делал стабильно, а новый решил сделать через жопу? - дохрена платных модулей в новом нодени бесплатные. - документация для разработчиков лучше чем в старом нодени. Посмотри по форуму как чел сходу сделал модуль для Н+. - документация по установке есть, на 80% завершенная, но и это не мешает меня спросить еси что-то не получится. - вы будете вечно сидеть на старой версии? Или может поможете и совместно сделаем новый и лучше и быстрее.
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #6 : 06 Декабря 2012, 13:20:59 » |
|
я за ПОМОГАТЬ!!!!
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #7 : 06 Декабря 2012, 13:32:01 » |
|
на днях разверну >1000 абонентов на N+
|
|
|
Записан
|
|
|
|
Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 349
|
|
« Ответ #8 : 06 Декабря 2012, 13:51:12 » |
|
Я очень рад, что новая версия у многих уже работает в реале, но тут не только проблемы установки и запуска. Обучить персонал и тех поддержку новому биллингу, находясь от них за сотни километров тот еще геморрой. Я уже не говорю про связь с 1C модулями, платежными терминалами, ERP и прочим (писать самому - нет уж спасибо, у меня есть и другие сети с другими биллингами, а варианта дать денег и чтоб все работало пока нет), сам по себе биллинг может прекрасно работать и я погоняю его на стенде, но речь идет о сети в которой нужно как-то решить возникшую проблему и уже потом думать о плавном переходе. Понял что опробованного решения пока нет, буду думать дальше возможные варианты.
|
|
|
Записан
|
|
|
|
Andrey Zentavr
NoDeny
Старожил
Карма: 29
Offline
Сообщений: 301
|
|
« Ответ #9 : 06 Декабря 2012, 18:55:57 » |
|
а есть пиар - используйте Nodeny 52 (который не известно на сколько стабильный).
N52 вполне прилично работает вместо того что б глумится лутше бы взял и протестировал а потом висказывать своё фэ уже есть 55 ревизий N52 некоторие из них успешно роботают в реале В первых фэ никто не высказывает, во вторых некоторые != все. В третьих: 1) Переезд с биллинга А на биллинг Б влечет за собой перестройку кастомных модулей, которые были написаны компанией/ написаны другими разработчика за деньги / куплены 2) во вторых, простои связанные с некачественным финалом при миграции чреваты финансовыми потерями и(или) уходом клиентов ( и еще хуже если корпоративных клиентов). ... и. Т.д. Давайте не превращать топик снова в холивар, а общаться по теме: как распалелить ядро.
|
|
|
Записан
|
|
|
|
Andrey Zentavr
NoDeny
Старожил
Карма: 29
Offline
Сообщений: 301
|
|
« Ответ #10 : 06 Декабря 2012, 19:09:52 » |
|
У нас тоже такая проблема имеет место быть, и, что не удивительно, никакого решения нет, а есть пиар - используйте Nodeny 52 (который не известно на сколько стабильный).
Какой в жопу пиар? Для кого я делал новый нодени? Чтоб, блять, пиариться ради бесплатного распространения? Я четко объясняю причины: - дофига людей просили новые фичи, в N50 их сделать невозможно либо большие костыли. Я начал делать и сделал новый. - я не могу поддерживать старый и новый одновременно - в этом нет смысла. - что это за, блять, отсылки к "неизвестно насколько стабильный"? Кто-то жаловался? Или я старый нодени делал стабильно, а новый решил сделать через жопу? - дохрена платных модулей в новом нодени бесплатные. - документация для разработчиков лучше чем в старом нодени. Посмотри по форуму как чел сходу сделал модуль для Н+. - документация по установке есть, на 80% завершенная, но и это не мешает меня спросить еси что-то не получится. - вы будете вечно сидеть на старой версии? Или может поможете и совместно сделаем новый и лучше и быстрее. Стас, можно та "ты"? Я ни с кем не хочу ругаться и не рассказываю что ты плохой разработчик. Разработчик ты очень даже хороший и код у тебя очень документированный (я говорю за именно тот, с которым я работал и который мне приходилось обслуживать для компании Линет, г. Запорожье). Я работал в основном с фронтэндом (т.е. грубо говоря веб-мордой) и проблем особо не было. Когда меня попросили посмотреть ядро, честно говоря в нём уже я немного растерялся. Основной цикл из трёх десяток строчек и КУЧА КУЧА функций после - всё в одном файле. Глобальные переменные почти везде, т.е. не являясь автором, очень долго нужно чтобы войти как и куда оно работает и откуда что появляется. Я свои скрипты пытаюсь писать с "use strict;" - тогда как-то более видно что где объявляется, куда и как передаётся. В процессе попыток распаралелить ядро оно у меня работало секунд 40, пока форки не начали заверщать обсчёты трайика и рвать соединения с БД. Т.е. чтобы работало всё как задумывалось, нужно создавать и закрывать соединение с БД в пределах той функции, в которой работаешь. В общем, чтоб сделать хорошо много времени нужно потратить на изучение и рефакторинг того что есть. Прошлая наша тема превратилась в переписку о прелестях Nodeny+, но не решении проблемы. Т.е. вышло как-то так: имеете проблему, решайте сами. Много компаний, который интегрировали свои продукты и Вашим биллингом не могут взять и сорваться на новую версию. Процесс перехода для них будет длительным.
|
|
|
Записан
|
|
|
|
Andrey Zentavr
NoDeny
Старожил
Карма: 29
Offline
Сообщений: 301
|
|
« Ответ #11 : 06 Декабря 2012, 19:11:01 » |
|
Я очень рад, что новая версия у многих уже работает в реале, но тут не только проблемы установки и запуска. Обучить персонал и тех поддержку новому биллингу, находясь от них за сотни километров тот еще геморрой. Я уже не говорю про связь с 1C модулями, платежными терминалами, ERP и прочим (писать самому - нет уж спасибо, у меня есть и другие сети с другими биллингами, а варианта дать денег и чтоб все работало пока нет), сам по себе биллинг может прекрасно работать и я погоняю его на стенде, но речь идет о сети в которой нужно как-то решить возникшую проблему и уже потом думать о плавном переходе. Понял что опробованного решения пока нет, буду думать дальше возможные варианты.
+1
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #12 : 06 Декабря 2012, 20:13:56 » |
|
1) Переезд с биллинга А на биллинг Б влечет за собой перестройку кастомных модулей, которые были написаны компанией/ написаны другими разработчика за деньги / куплены
Конкретно какие кастомные модули и что они выполняют? 2) во вторых, простои связанные с некачественным финалом при миграции чреваты финансовыми потерями и(или) уходом клиентов ( и еще хуже если корпоративных клиентов). ... и. Т.д.
Ну есть же кучу раз опробованное решение: берешь район и подключаешь его к новой версии. Учишься работать, учишься исправлять проблемы, понимать. Если проблема - ничего страшного не произойдет - во-первых людей не много, во вторых можно просто кабелек перетыкнуть на старый биллинг. Было бы желание. Я просто не понимаю одной вещи: существует ли вообще биллинг, который в идеале вам всем нужен? Ведь вы все равно запоете, что он непроверенный, боитесь нового, потерять бабло и т.д. Причем я не упрекаю. Но если так оно и есть, нахрена было просить новую версию? Можно на костылях и доковылять на старом. Давайте не превращать топик снова в холивар, а общаться по теме: как распалелить ядро.
Ядро было написано тучу лет назад, я тогда вообще ни с одним perl-программистом не общался и делал все исходя из внутреннего наития и направления ветра. Самый идеальный вариант - физически разделить биллинг (да, я к предложенному выше варианту клоню). Да будут висжать бухгалтера "мы хотим консолидированную статистику" и т.д. Но как бы ты не отдалял проблему, она все равно вернется с ростом сети. Неужели нет смысла помочь оттестить н+ на больших нагрузках - это как раз то, что мне не хватает т.к. сеть у меня маленькая и уже не могу тестить на нескольких десятках тысяч абонов как ранее
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #13 : 06 Декабря 2012, 20:14:12 » |
|
Ну, видимо, нужно понять, что переход будет длительный а не "разом все" и не парится по этому поводу. А имеющиеся баги (ну как минимум те, которые можно профиксить не переписывая ядро с нуля) нужно все-таки устранять и если не выпускать багфиксы, то хотя-бы описание устранения. А то на сегодняшний момент интересная получилась картина.... Много... очень много сетей купили биллинг.... а теперь нате вам... Сорри за офтоп... итак... как распараллелить ядро --- ответ никак.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #14 : 06 Декабря 2012, 20:19:47 » |
|
А то на сегодняшний момент интересная получилась картина.... Много... очень много сетей купили биллинг.... а теперь нате вам...
Ну, не надо. Во-первых, большинство таки не купило. Во-вторых есть срок техподдержки. Я лично не могу быть в рабстве на всю жизнь только потому что 5 лет назад кто-то купил копию. Я же не отказываюсь от поддержки продукта! Я говорю - старый устарел, ширина колеи сменилась, пора менять составы, ау!
|
|
|
Записан
|
|
|
|
|