Silitra 0 Опубликовано: 2008-10-26 14:08:00 Share Опубликовано: 2008-10-26 14:08:00 #define FLUSH_TIME (10) #define REMOVE_TIME (15) FlushAndRemove() packets: 35053(rem 10738) ip2packets: 61106(rem 18476) если массив ip2packets содержит более 70К (может и боелее, в выводе не видел значения выше 70К) элементов поток зависает. какова причина ? на сколько помню размер массива в Cи не ограничен. как победит траблу? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2008-10-26 15:36:25 Share Опубліковано: 2008-10-26 15:36:25 Во первых, размер массива в С ограничен доступной памятью. Во вторых, тут не С а С++. В третьих, тут не массив а std::map. Но наблюдение, несомненно, интересное... Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-27 04:37:24 Автор Share Опубліковано: 2008-10-27 04:37:24 ну это все понятно. как лечить ? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2008-10-27 08:40:27 Share Опубліковано: 2008-10-27 08:40:27 Я вобще не вижу, почему тут может быть проблема. Возможно, совпадение? Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-27 08:45:33 Автор Share Опубліковано: 2008-10-27 08:45:33 что имеется в виду под совпадением ? а проблема есть и остается. достаточо увеличить #define REMOVE_TIME (15) и тут же попадаем на зависание потока. Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2008-10-27 18:35:35 Share Опубліковано: 2008-10-27 18:35:35 Ураа !! наконец-то кто-то взялся за Traffcounter !! как показывали эксперементы у меня, именно в нем есть зацикливание и повышение нагрузки на проц. Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-27 18:45:51 Автор Share Опубліковано: 2008-10-27 18:45:51 2den68 Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-27 18:48:18 Автор Share Опубліковано: 2008-10-27 18:48:18 тебе скорей всего поможет user.cpp -lastWriteStat = stgTime + random() % settings->GetStatWritePeriod(); +lastWriteStat = stgTime + settings->GetStatWritePeriod(); если поток не слишком велик Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2008-10-27 23:43:47 Share Опубліковано: 2008-10-27 23:43:47 тебе скорей всего поможет user.cpp -lastWriteStat = stgTime + random() % settings->GetStatWritePeriod(); +lastWriteStat = stgTime + settings->GetStatWritePeriod(); .... Спасибо, это реализовано давно, чтоб поток не затыкался и все не вставало колом: #define FLUSH_TIME (3) #define REMOVE_TIME (5) понимаю что мало и неправильно но .. как-то работает, пока ... косяки где-то глубже, в идеологии сбора траффа + накопления детайл стат ... Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-28 04:53:34 Автор Share Опубліковано: 2008-10-28 04:53:34 2den68 а можешь показать вывод FlushAndRemove() ? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2008-10-28 08:28:57 Share Опубліковано: 2008-10-28 08:28:57 Проблема трафкаунтера сейчас в том, что при любых операциях с деревом пакетов все действия блокируются. Так, например, как уже было верно подмечено den68, при FlushAndRemove лочится прием трафика. И наоборот - при приеме лочится FlushAndRemove. Решается эта проблема введением 2-х промежуточных буферов: на прием пакета и на его отдачу юзеру. При этом функции FlushAndRemove делегируются либо классу USER либо классу USERS. Этот вариант решения мы с Борей обсуждали на прошлой неделе. Сейчас он в процессе проектирования. Изменений все-таки надо будет много сделать. Кроме того я хочу полностью "отвязать" TRAFFCOUNTER от юзеров и от захватчика трафика - чтобы на него можно было написать нормальный юнит-тест. Кому интересно - могу дать текущие исходники того, что я хочу реализовать. Ели бы у нас не лежал основной канал в инет - можно было бы попробовать реализовать это вместе, используя CVS. Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-28 08:55:15 Автор Share Опубліковано: 2008-10-28 08:55:15 могу выделить отдельную машину с широким каналом и поднятым cvs. + Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2008-10-28 08:57:28 Share Опубліковано: 2008-10-28 08:57:28 Широкий канал здесь и даром не нужен - нужен нормальный программист Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-28 09:16:47 Автор Share Опубліковано: 2008-10-28 09:16:47 гдеж его взять? Может вакансию откроем? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2008-10-28 09:19:50 Share Опубліковано: 2008-10-28 09:19:50 Если нет - то я и сам справлюсь. Правда это будет несколько медленно - занимаюсь проблемой по вечерам... Да и вобще, OpenSource-проекты всегда развивали энтузиасты, а не наемные работники Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-10-28 09:26:25 Автор Share Опубліковано: 2008-10-28 09:26:25 уже офтоп попер но всеравно не плохо, когда этот "энтузиазизм" стимулируется $. 200-300$ в месяц, на пиво ни когда не помешают Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2008-10-28 13:01:41 Share Опубліковано: 2008-10-28 13:01:41 Кому интересно - могу дать текущие исходники того, что я хочу реализовать. Ели бы у нас не лежал основной канал в инет - можно было бы попробовать реализовать это вместе, используя CVS. Давай, попробую с радостью поучаствовать, правда время не вагон ... Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2008-10-28 13:07:59 Share Опубліковано: 2008-10-28 13:07:59 Напомни, плиз, почту... Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2008-11-29 08:06:49 Автор Share Опубліковано: 2008-11-29 08:06:49 ну как там? дела идут ? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2008-11-29 19:51:16 Share Опубліковано: 2008-11-29 19:51:16 Потихоньку. На быстрый результат не рассчитывайте - рук не хватает. Ссылка на сообщение Поделиться на других сайтах
Silitra 0 Опубліковано: 2009-01-07 16:17:23 Автор Share Опубліковано: 2009-01-07 16:17:23 2madf просил нароботки выслать. смотри лс. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас