Перейти до

madf

Сitizens
  • Всього повідомлень

    4 122
  • Приєднався

  • Останній візит

  • Дней в лидерах

    22

Все, що було написано madf

  1. madf

    Сбор багов и feature requests

    Помозговали немного... Вот что пока придумалось (faust - я): По поводу протокола: если бы мы знали как его ускорить - думаешь, не ускорили бы? Точнее идеи по этому поводу есть, но в твоем случае это не поможет. У тебя для каждого юзера: - делается форк; - открывается TCP-сокет; - шифруется и отправляется XML; - принимается, дешифруется и разбирается XML; - закрывается сокет; - делается форк; - открывается TCP-сокет; - создается, шифруется и отправляется XML размером побольше; - принимается, дешифруется и разбирается XML; - закрывается сокет. Как думаеш, будет такая схема быстро работать? Конвертор в любом случае быстрее.
  2. madf

    Переход на Mysql

    И сам запутался и меня запутал. Вот смотри: (gdb) r Starting program: /data1/admin/Distr/stg-2.404.9.7/projects/convertor/convertor Тут ты запустил его без указания конфига. По этому он взял его из стандартного места: ./convertor.conf Код ниже показывает, что источником данных послужила пустая дэфолтная база. (gdb) r ./ Starting program: /data1/admin/Distr/stg-2.404.9.7/projects/convertor/convertor ./ Тут ты запускаеш его с явным указанием конфига. Да, это уже моя ошибка была, т.к. сам конфиг не указан - указан только путь к нему. Но в отличие от stargazer он не ищет файл с конфигом по указанному пути, а ищет указанный файл. Такой файл не может быть открыт и в нем, соответственно, отсутствует параметр ModulesPath. Далее, по поводу данных. Конвертор не изобретает ничего нового. Внутри него нет никаких стандартных данных. Он берет данные из Source и переносит их в Dest.
  3. madf

    Сбор багов и feature requests

    Ну я скрипта не видел... Но вобщето протокол конфигуратора достаточно медленный Почему конвертор не заюзал?
  4. madf

    Сбор багов и feature requests

    2Silitra: Вот буфер: map<RAW_PACKET, PACKET_EXTRA_DATA> packets; // Дерево в котором собраны пакеты одного типа а вот - индекс к буферу: typedef map<RAW_PACKET, PACKET_EXTRA_DATA>::iterator pp_iter; multimap<uint32_t, pp_iter> ip2packets; // Индекс адресов, указывающих на соответствующие пакеты
  5. madf

    Сбор багов и feature requests

    Уже кто-то об этом говорил. Грабли неизвестно где, т.к. падает на использовании API FreeRADIUS. К стати, в прошлый раз тоже было на 6-й фре, если не ошибаюсь.
  6. madf

    Сбор багов и feature requests

    1. Как я уже говорил - это проблемы загрузчика плагинов. Будут исправлены в след версии. Бага не влияет на результаты работы. 2. Нету смысла в буфере, т.к. внутри stg и так есть буфер. 3. Предполагаю - из-зи блокировок. FlushAndRemove останавливается на захвате мьютекса. 4. Может. Может быть мы так и сделаем. Если реализуешь, протестируешь и покажешь что это действительно дает выиграш в производительности - будем благодарны 5. А кто говорил про сложность организации? Почему многие считают, что для многопроцессорных систем надо выполнять какие-то телодвижения? Stargazer и так работает в несколько потоков. Нужно сделать профилирование, найти узкие места и придумать как их обойти.
  7. madf

    Переход на Mysql

    1. Это не то, т.к. небыло сегфолта, а было корректное завершение работы. Но уже и не нужно, все что хотел - я увидел. 2 и 3. Знать неправильные настройки. Поподробнее - в документации.
  8. madf

    Stargazer 2.016.7.6 + Vpn

    Если эти модули ядра есть - да.
  9. madf

    Переход на Mysql

    1. А где же bt? 2. Судя по тому что упало при delete toStore - преобразование базы завершено. Падения на деструкторе есть, я это признаю, я знаю их неявную причину, я не могу предложить воркераунда и обещаю исправить это в будущих версиях. С другой стороны - этот сегфолт не портит данных и не влияет на результаты работы программы. 3. Да, с параметром ошибся. Но в любом случае - тебе виднее где у тебя конфиг лежит
  10. madf

    Сбор багов и feature requests

    1. Я же говорил 2. Буфер не обезопасен мьютексом. Что произойдет, если при флаше в буфер добавятся данные? 4. У неавторизованных пользователей может накапливаться статистика. 5. Потоки распределяются между процессорами ядром.
  11. madf

    Stargazer 2.016.7.6 + Vpn

    Если ты не сделаешь modprobe iptable_filter (и это не сделает iptables за тебя автоматически) - у тебя не будет доступна таблица filter. Если ты не сделаешь modprobe ip_queue (и это не сделает iptables за тебя автоматически) - у тебя не будет доступна цель QUEUE. Я не понимаю, чем так плохо сделать два вызова modprobe. PS: если это чем-то не устраивает - никто не запрещает вкомпилить код этих модулей в ядро.
  12. madf

    Переход на Mysql

    Тогда запусти из-под gdb: # export LD_LIBRARY_PATH=../../lib # gdb ./convertor ... (gdb) r ./ ... и когда упадет - покажи вывод команды bt.
  13. madf

    Сбор багов и feature requests

    1. Я имел в виду что в 146 строке файла netflow_cap.h ничего нет 2. На время FlushAndRemove лочатся все операции с деревом пакетов. Соответственно - и вызовы от cap-модулей. А что за буфер? 3. Перестает? Интересно... 4. Стата есть у всех. 5. Это сложно.
  14. madf

    мелкие баги

    Уже обсуждалось и уже исправлялось. http://stg.dp.ua/download/sgconfig/1.90.9/....1.90.9.win.exe
  15. madf

    Сбор багов и feature requests

    Вот! Вот этот дядя с большими ушами! Не туда смотрите. Ошибка тут: #1 0x283f30ba in ~FLOW_CAP (this=0x284152e0) at netflow_cap.h:146 Но, подозреваю, - там пусто. А это значит - неправильно срабатывает *_CREATOR. Я уже сталкивался с этим и мы с Борей обсуждали это. В будущем схема работы с плагинами несколько изменится. Воркераунда пока нет, но и данные это падение не портит, т.к. происходит в самом конце, когда жизненно-важные операции уже завершены.
  16. madf

    Переход на Mysql

    Не влияет. Влияет то, что ты используеш модули из /usr/lib/stg, а не из ../stargazer/modules
  17. madf

    Переход на Mysql

    Да, конечно. В 405-й была обновлена библиотека DOTCONFpp. В частности - очепятка в слове "CASEINSENSITIVE" - "CASEINSENSETIVE". Замените это слово в указанной строке и все соберется.
  18. madf

    Stg-web With Mysql

    Думаю, вопрошающий имеет в виду оплату услуг путем отсылки SMS.
  19. madf

    Переход на Mysql

    Берем исходники нового конвертора. Ложим его в дерево исходников stg версии 2.404.9.7. Собираем. После этого должен работать как часики.
  20. madf

    Сбор багов и feature requests

    То что привели вывод gdb stargazer stargazer.core - это хорошо. Но было бы еще неплохо увидеть вывод команды bt (gdb)
  21. Патч №1: Index: projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp =================================================================== RCS file: /cvsroot/stargazer/stargazer/plugins/authorization/inetaccess/inetaccess.cpp,v retrieving revision 1.57 diff -u -B -u -8 -p -r1.57 inetaccess.cpp --- projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp 30 Mar 2008 13:51:31 -0000 1.57 +++ projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp 14 Aug 2008 13:43:20 -0000 @@ -195,17 +195,18 @@ FREEMB AUTH_IA_SETTINGS::GetFreeMbShowTy return freeMbShowType; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- IA_PHASE::IA_PHASE() { phase = 1; -phaseTime = 0; +//phaseTime = 0; +gettimeofday(&phaseTime, NULL); } //----------------------------------------------------------------------------- IA_PHASE::~IA_PHASE() { #ifdef IA_PHASE_DEBUG flog = fopen(log.c_str(), "at"); if (flog) { @@ -226,27 +227,29 @@ void IA_PHASE::SetUserLogin(const string IA_PHASE::login = login; } //----------------------------------------------------------------------------- void IA_PHASE::WritePhaseChange(int newPhase) { UTIME newPhaseTime; gettimeofday(&newPhaseTime, NULL); flog = fopen(log.c_str(), "at"); -int64_t tn = newPhaseTime.GetSec()*1000000 + newPhaseTime.GetUSec(); -int64_t to = phaseTime.GetSec()*1000000 + phaseTime.GetUSec(); +/*int64_t tn = newPhaseTime.GetSec()*1000000 + newPhaseTime.GetUSec(); +int64_t to = phaseTime.GetSec()*1000000 + phaseTime.GetUSec();*/ if (flog) { string action = newPhase == phase ? "U" : "C"; + double delta = newPhaseTime.GetSec() - phaseTime.GetSec(); + delta += (newPhaseTime.GetUSec() - phaseTime.GetUSec()) * 1.0e-6; fprintf(flog, "IA %s %s oldPhase = %d, newPhase = %d. dt = %.6f\n", login.c_str(), action.c_str(), phase, newPhase, - (tn - to)/1e6); + delta); fclose(flog); } } #endif //----------------------------------------------------------------------------- void IA_PHASE::SetPhase1() { #ifdef IA_PHASE_DEBUG Патч №2: Index: include/utime.h =================================================================== RCS file: /cvsroot/stgincludes/include/utime.h,v retrieving revision 1.4 diff -u -B -u -8 -p -r1.4 utime.h --- include/utime.h 28 Mar 2008 08:42:19 -0000 1.4 +++ include/utime.h 14 Aug 2008 13:43:56 -0000 @@ -108,28 +108,60 @@ struct UTIME: public timeval //cout << (tv_sec == rhs.tv_sec) << " " << (tv_usec == rhs.tv_usec) << endl; return (tv_sec == rhs.tv_sec) && (tv_usec == rhs.tv_usec); } UTIME operator+(const UTIME & rhs) { // TODO optimize long long a, b; - a = tv_sec * 1000000 + tv_usec; + /*a = tv_sec * 1000000 + tv_usec; b = rhs.tv_sec * 1000000 + rhs.tv_usec; - return UTIME((a + b) / 1000000, (a + b) % 1000000); + return UTIME((a + b) / 1000000, (a + b) % 1000000);*/ + a = tv_sec + rhs.tv_sec; + b = tv_usec + rhs.tv_usec; + if (b > 1000000) + { + ++a; + b -= 1000000; + } + return UTIME(a, b); } UTIME operator-(const UTIME & rhs) { // TODO optimize long long a, b; - a = tv_sec * 1000000 + tv_usec; + /*a = tv_sec * 1000000 + tv_usec; b = rhs.tv_sec * 1000000 + rhs.tv_usec; - return UTIME((a - b) / 1000000, (a - b) % 1000000); + return UTIME((a - b) / 1000000, (a - b) % 1000000);*/ + a = tv_sec - rhs.tv_sec; + b = tv_usec - rhs.tv_usec; + if (a >= 0) + { + if (b >= 0) + { + return UTIME(a, b); + } + else + { + return UTIME(--a, b + 1000000); + } + } + else + { + if (b >= 0) + { + return UTIME(++a, 1000000 - b); + } + else + { + return UTIME(a, b); + } + } } time_t GetSec() const { return tv_sec; } suseconds_t GetUSec() const Надеюсь, это оно. По крайней мере тут было арифметическое переполнение.
  22. Лог получен, решение найдено. Тестирую...
  23. madf

    авторизатор во freebsd

    Без bash сборка не работает.
  24. А почты все нет и нет...
  25. madf

    Inetacces на Delphi 7

    По скрину не видно что предупреждений компилятора нет. Кроме того, Access violation при recvfrom обычно говорит о недостаточно размере приемного буфера.
×
×
  • Створити нове...