Архив | Об архиве | FAQ | New BAN List | Полезные ссылки | Друзья архива | Архив новостей |
|
Регистрация | Справка | Правила форума | Поиск | Сообщения за день | Все разделы прочитаны | Пользователи | Календарь |
Приёмная ArjLover-a Послания и пожелания по работе Архива |
|
Опции темы | Опции просмотра |
|
|||
Shurik, понять код XBTT мне слабо - он написан в лучших традициях С++, так что для меня он просто нечитаем... :-(
Если чего найдете в коде - отпишите здесь, все что я написал выше это проверенное тестами поведение стандартно собранного xbtt, возможно нужно указать какие-то опции при сборке... |
|
|||
Ну одним из плюсов xbt является то, что он на самом деле простой Почти весь трекер сосредоточен в server.cpp. Может, там и менять ничего особо не нужно - тогда платить даже 5 долларов будет жирно (а ведь ещё наверняка попытаются вздёрнуть цену).
В общем, посмотрю и скажу. |
|
|||
Патч. Работоспособность не проверял. По сути ключом в Cserver::t_file::peers теперь является не m_ipa, а pair<m_ipa,m_port>. Явное обращение по ключу встречается только три раза.
Код:
Index: server.cpp =================================================================== --- server.cpp (revision 1882) +++ server.cpp (working copy) @@ -271,7 +271,7 @@ file.ctime = time(); if (v.m_left && user && user->wait_time && file.ctime + user->wait_time > time()) return bts_wait_time; - t_peers::key_type peer_key = v.m_ipa; + t_peers::key_type peer_key = std::make_pair(v.m_ipa, v.m_port); t_peers::iterator i = file.peers.find(peer_key); if (i != file.peers.end()) { @@ -350,7 +350,7 @@ if (!ti.m_left && !i->second.left) continue; boost::array<char, 6> v; - memcpy(&v.front(), &i->first, 4); + memcpy(&v.front(), &i->first.first, 4); memcpy(&v.front() + 4, &i->second.port, 2); candidates.push_back(v); } @@ -787,7 +787,7 @@ std::string page; for (t_peers::const_iterator i = peers.begin(); i != peers.end(); i++) { - page += "<tr><td>" + Csocket::inet_ntoa(i->first) + page += "<tr><td>" + Csocket::inet_ntoa(i->first.first) + "<td align=right>" + n(ntohs(i->second.port)) + "<td align=right>" + n(i->second.left) + "<td align=right>" + n(::time(NULL) - i->second.mtime) Index: server.h =================================================================== --- server.h (revision 1882) +++ server.h (working copy) @@ -32,7 +32,7 @@ boost::array<char, 20> peer_id; }; - typedef std::map<int, t_peer> t_peers; + typedef std::map<std::pair<int, int>, t_peer> t_peers; struct t_deny_from_host { |
|
|||
С патчем будем ждать mno, я в линуксе совсем не ориентируюсь (я там даже cvs найти не смог)... :-(
А пока о том что мне удалось сделать на текущий момент: 1. На torrent.arjlover.net:2710 отвечает, временно, а может нет, там видно будет, opentracker. Его использует, к примеру, ThePirateBay. Пока он обслуживает все файлы "фильмиков". Других файлов у меня просто нет в доступе... :-( 2. На "фильмиках" поднят торрент-клиент btpd. Он сидирует все файлы "фильмиков". Под нагрузкой я его проверить не могу, у меня канал всего 1Мбит, но скачивание файла: - uTorrent = 30-40 Кб/с - mlDonkey = 40-45 Кб/с по данным btpd на сервере: - upload = 70-80 Кб/с - нагрузка (top) ~ 0 1 файл и 70-80Кб для сервера - смешная нагрузка, но больше мой канал выдать не может... :-( |
|
||||
Слушай, как я все вижу - по-моему у тебя получилось! На трекер не смотрел, хотелось бы услышать его возможности по нашим двум основным проблемам - где хранит хэши и как добавлять на автомате?
По торренту - ну уже счастье что его не видно в топе вообще, сейчас начал качать два файла - до 40 килов отдает, в топе по прежнему не видно, ну сейчас фильмикам плохо на одной сетевухе. Вообще скачивание начинается моментально - вся цепочка отрабатывает моментально. Торренты мультов лежат там же - в моей дире. Вообще если возражений нет, то я бы выложил всю директорию с торрентами фильмиков в открытый доступ и новостью на главной странице призвал бы к массовому тестированию. Или не будем пока? P.S. Скорость 70-80 - это нормально, я вообще планировал отдать один мегабит под торрент, т.е. 100 килов. Ну может для начала можно больше... |
|
||||
Да, нам нужен торрент-трекер. Это снижение нагрузки на основной сервер, увеличение скорости скачивания, увеличение аудитории. Я скачал Каспера и
за три дня раздал на 2,05 гБ. А вопросы регистарции, лимиты скорости, прочие рейтинги - это технические вопросы и их можно будет решать в процессе, по обстановке. Думаю речь не идёт как у других, или пристегнуться к другим. Вязть у других лучшее и сделать хорошо для себя! |
|
|||
ArjLover, массовое тестирование можно начинать без особых проблем. Как раз и посмотрим как клиент держит нагрузку.
Я правда думал о том что можно уже перегенерить info-странички и на главной попросить по возможности качать через торрент на тестовый период, но можно и выложить всю диру. Хотя так много накачают того что не нужно было, чтобы потестить, так сказать, а если добавить в info то будут брать только нужное и только кому нужно. Наверное... Ограничение на канал ставится в настройках клиента -поставить 1М сейчас или после тестирования? По трекеру: 1. Хранит хэши в простом текстовом файле, то-есть список хэщей, каждый с новой строки. 2. Добавлять и удалять просто - текстовый файл. ToDo: 1. Я пока не готов предоставить полностью выверенную схему работы торрент-части архива, так как не до конца еще протестировал разные комбинации - по трекеру и клиенту почти нет документации, по-этому все приходиться выуживать из исходного кода, а это достаточно длительный процесс (код на Си). 2. Пока не смог подсунуть клиенту торренты без перепроверки всего содержимого, а значит время начального запуска клиента на серверах будет измеряться десятками часов... :-( Там простая структура, но вот "метка" для торрента создается из внутренних структур клиента и воссоздать ее я пока не смог... К сожалению, исходя из свободного времени и сложности задачи - мне кажется что быстрее будет добавить с пересчетом чем ждать пока я разберусь... :-( |
|
||||
Спасибо вам, ребята, за ваши старания, за работу. Благодаря вашему архиву я исполнил давнишнюю мечту детства — посмотрел, наконец-то, полностью некоторые фильмы, которые помнил только отрывочно...
Но может, ну его нафиг, этот трекер? Честно, мне вас жаль. Вы тут столько мучаетесь с конфигами, со скриптами... это всё из-за того, что серверная часть BitTorrent-а действительно сложная. Может, проще и эффективнее будет всё-таки задействовать eDonkey? Всего делов-то — запустить eserver (lugdunum) и mlnet. Обе проги маленькие, автономные, не надо никаких SQL-баз, никаких дополнительных файлов они не создают, ссылки на страницах уже есть. Всё гораздо проще! Я пользовался обоими протоколами для скачивания, и мне лично eDonkey (eMule (MorphXT)) нравится больше. Интереснее. Больше свободы. И честнее — отношения между участниками сети устанавливаются как бы двусторонние, это реально P2P. А в случае BitTorrent всё зависит от трекера. Нет трекера — нет закачки. Нагрузка на сервер опять же, на ваш... В общем, подумайте, стоит ли гнаться за «современными» технологиями, если они требуют столько труда и ломаний ваших голов. С наилучшими пожеланиями, Bigfoot P.S. Мой MorphXT раздал уже 40 ГБ. P.P.S. Могу написать руководство по установке и настройке клиента ED2K для чайников (греющихся на вашем архиве |
|
||||
Ну, можно в настройках указать, что это community server, и указать, что подключаться могут только те, у кого в имени пользователя написано, например, [Arj] или еще какая-нибудь специфическая строка.
Когда все друзья архива будут подключены к одному и тому же серверу — это ж хорошо, источники лучше находится будут |
|
|||
Нет, ошибаешься. Ты не представляешь себе, какой шквал поисковых запросов обрушится на сервер. Я ставил - я знаю. Для современных ed2k-клиентов поиск серверов проблему вообще не представляет, тем более что в вайтлистах их осталось очень мало.
|
|
||||
Вот видите, лишние запросы вам не нравятся (и это понятно) — а сколько будет запросов к трекеру? Когда все файлы будут обторренчены?
Предлагаю закрыть доступ к файлам архива по HTTP и оставить только ED2K-сервер и раздающие клиенты Кстати, они уже были, а потом куда-то делись, и люди в недоумении. Последний раз редактировалось Bigfoot, 05.03.2008 в 23:48. |
|
|||
Bigfoot, нагрузка на трекер конкретна - только интересующиеся контентом сайта. Нагрузка на ed2k-сервер - все кому не лень.
При желании, кстати, можно сократить нагрузку на трекер по одному пиру от каждой раздачи, зарезав коннекты к нему серверному клиенту и отпатчив трекер так, чтобы он выставлял пира принудительно на все раздачи. |
|
|||
Shurik, сиды для разных торрентов разные, так что нужно будет патчить хитро... И резать подключение тоже не хорошо - клиет будет сильно виснуть на тайм-аутах...
По-моему, если возникнет такая потребность, лучше будет сделать следующее: 1. Загрузить в торрент-клиенты архивов специальный набор .torrent-файлов. В этих файлах будет удален анонс-адрес трекера, то-есть они будут, как бы безтрекерными. 2. Написать скрипт который будет иногда проходиться по анонс-адресу трекера и добавлять в список пиров архивные клиенты. Так как анонс это простой GET, то сделать такой скрипт просто. Нужен будет netcat и список хэшей с каждого архива. Хотя я сильно сомневаюсь что возникнет необходимость "помогать" трекеру такими методами... |
|
|||
Клиент это сделает хорошо, это понятно, только вот делать это он будет по интервалу, полученному от трекера (30-60 минут) и по сети.
А в моем варианте можно пройтись анонсом после рестарта трекера один раз и далее по необходимости, а не по расписанию. К тому же делать это может сервер трекера, который по определению менее нагруженный чем сервера архивов и делать он это будет локально у себя. |
|
|||
Если клиент архива не будет себя анонсировать, его вытрет по таймауту. Так что разницы нет - обновлять клиентом или как-то специально. Объём данных, передаваемых при анонсе, совсем невелик - основную проблему представляет как раз обработка их, и тут php-трекеры испытывают серьёзные проблемы - они вынуждены подгружать из базы список пиров при каждом обращении и обновлять его при этом. Что приводит к блокировкам и тормозам.
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|