Архив форума Ace Stream       Wiki        Info

перейти на новый форум
Расширенный поиск  

Автор Тема: Broadcasting ( организация собственных прямых трансляций на базе TS )  (Прочитано 342747 раз)

0 Пользователей и 2 Гостей смотрят эту тему.

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

сегодня на тс сервере(1.0.6.8) запущенном на линукс, упал трекер(примерно когда было 4000 пиров), вот лог:
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
после рестарта еще проскочили сообщения:
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
при этом трансляция продолжает идти, но почти половину пиров срезает(по крайней мере судя по статистике трекера ТС у меня с 4000 упало до 2000 пиров)
Записан

navip999

  • Специалист
  • Newbie
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 20

И так после 2 дней ативного бродкастинга выкладываю отчет:
1.) ТС версии 2.0.0
Отдача идет неравномерно, может идти 2мбайта, но потом может сразу упасть до 800кбайт, конечно же такие перепады отражаются на стабильности потока. Максимум разгонялась до 3.5 мбайт
2.) Ubuntu 12.10, ТС версии 1.6.8 терминал
Отдача идет раза в 3 выше чем на windows версии плагина.
Через ~5-6 часов выскакивают ошибки:
Цитировать
Starting TS Engine...
2012-11-03 11:24:32 lm::start_upnp: upnp_type 3 locally_guessed_ext_ip 127.0.0.1 listen_port 7764
.........++++++++
.....................................................................................++++++++
device id: MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAVCC34RlcR32LY4mGPbunequkNuWmWZ+Ejq/l/fpAFFHn40FUqtTiLwT5bFXt/Sdy5zQBB4H0Jq/AQjY
tracker url: http://10.201.***.***:7764/announce
bitrate: 225000
piece size: 131072
dest dir: /tmp/streams
------------------------
createlivestream: open stream: url http://192.168.1.12:9041 reader builtin
2012-11-03 11:24:32 stream: started input thread
2012-11-03 11:24:34 stream: restarting stream from piece 1
2012-11-03 11:24:41 lm::upnp_failed_callback: upnp_type 3 listenport 7764 listenproto TCP error_type 0 exc None
2012-11-03 11:24:41 lm::upnp_failed_callback: upnp_type 3 listenport 7764 listenproto UDP error_type 0 exc None
2012-11-03 17:27:22 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.28746032715e-05 write 1.08709788322 file /tmp/streams/livefootball.ws_TS1 pos 320077824 begin 320077824 end 320094208
2012-11-03 17:38:05 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.50203704834e-05 write 1.08108115196 file /tmp/streams/livefootball.ws_TS1 pos 472907776 begin 472907776 end 472924160
2012-11-03 18:39:05 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.4066696167e-05 write 1.16120314598 file /tmp/streams/livefootball.ws_TS1 pos 533725184 begin 533725184 end 533741568
2012-11-03 18:40:33 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.02428293228 file /tmp/streams/livefootball.ws_TS1 pos 554696704 begin 554696704 end 554713088
Traceback (most recent call last):
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 896, in get
ValueError: no info hash
2012-11-03 20:32:39 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.50203704834e-05 write 1.46556401253 file /tmp/streams/livefootball.ws_TS1 pos 534773760 begin 534773760 end 534790144
2012-11-03 23:50:36 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.4066696167e-05 write 1.00840711594 file /tmp/streams/livefootball.ws_TS1 pos 121634816 begin 121634816 end 121651200
2012-11-03 23:51:27 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.38282775879e-05 write 1.18135094643 file /tmp/streams/livefootball.ws_TS1 pos 133693440 begin 133693440 end 133709824
Traceback (most recent call last):
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
2012-11-04 01:40:29 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.81167507172 file /tmp/streams/livefootball.ws_TS1 pos 70254592 begin 70254592 end 70270976
2012-11-04 01:40:54 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.13964104652 file /tmp/streams/livefootball.ws_TS1 pos 76546048 begin 76546048 end 76562432
Traceback (most recent call last):
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
2012-11-04 01:44:06 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.4066696167e-05 write 1.25610303879 file /tmp/streams/livefootball.ws_TS1 pos 121372672 begin 121372672 end 121389056
2012-11-04 01:44:57 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.50203704834e-05 write 1.00097513199 file /tmp/streams/livefootball.ws_TS1 pos 134217728 begin 134217728 end 134234112
2012-11-04 01:45:17 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.90734863281e-05 write 1.23169112206 file /tmp/streams/livefootball.ws_TS1 pos 138674176 begin 138674176 end 138690560
2012-11-04 01:46:45 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.07351708412 file /tmp/streams/livefootball.ws_TS1 pos 159383552 begin 159383552 end 159399936
Traceback (most recent call last):
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Впринципе с этими ошибками тс нормально работает
Пожелания)
Сделать нормальную отдачу трафика на windows плагине, также как на ubuntu
Сделать на windows плагине такие опции как:
макс. количество клиентов
нод сервер
возможность запуска 2 и более трансляций
Записан

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

отдача на windows - это действительно проблема, с чем это связано тоже сложно сказать, если вы утверждаете, что код для windows и linux одинаков, надеюсь вы все же сможете найти причину этой проблемы, так как это важнеший параметр для трансляции. Но куда больше меня поражает сам алгоритм отдачи, который просто ставит крест на нормальной трансляции. Суть заключается в следующем: при просмотре  трансляции пир подключается к источнику и начинает получать видео поток напрямую с него, НО при получении определенного количества трафика он просто отключается и подключается новый пир, который получает также определенную квоту трафика, и так по кругу. О какой стабильности может идти вообще речь, если пиры кругами крутятся между собой, учитывая, что многие из них не могут нормально раздать контент в силу своего интернета (например адсл), и, соответственно, хорошие пиры "насильно" отключаются от источника вместо того, чтобы держать их у источника, в итоге наблюдаем глюки у клиентов и  плохую отдачу. Тут уж проблема на лицо и решить ее можно только изменив алгоритм раздачи. Даже не представляю где вы видели, чтобы так пиры обменивались между собой, что в сопках, что торрентах, в основном используются хорошие сиды и пиры и они не меняются, если обмен происходит нормально. В той же википедии описан алгоритм работы bittorrent:
Цитировать
Каждый клиент имеет возможность временно блокировать отдачу другому клиенту (англ. choke). Это делается для более эффективного использования канала отдачи. Кроме того, при выборе — кого разблокировать, предпочтение отдаётся пирам, которые сами передали этому клиенту много сегментов. Таким образом, пиры с хорошими скоростями отдачи поощряют друг друга по принципу «ты — мне, я — тебе».
Обмен сегментами ведётся по принципу «ты — мне, я — тебе» симметрично в двух направлениях. Клиенты сообщают друг другу об имеющихся у них сегментах при подключении и затем при получении новых сегментов, и поэтому каждый клиент может хранить информацию о том, какие сегменты есть у других подключенных пиров. Порядок обмена выбирается таким образом, чтобы сначала клиенты обменивались наиболее редкими сегментами: таким образом повышается доступность файлов в раздаче. В то же время выбор сегмента среди наиболее редких случаен, и поэтому можно избежать ситуации, когда все клиенты начинают скачивать один и тот же самый редкий сегмент, что негативно бы отразилось на производительности.
Обмен данными начинается, когда обе стороны в нём заинтересованы, то есть, каждая из сторон имеет сегменты, которых нет у другой. Количество переданных сегментов подсчитывается, и если одна из сторон обнаруживает, что передаёт в среднем больше, чем принимает, она блокирует (англ. choke) на некоторое время отдачу другой стороне. Таким образом, в протокол заложена защита от личеров.
и в вашем случае алгоритм несколько отличается от выше изложенного, а принцип "ты - мне, я - тебе" попросту не работает! Конечно, когда все пиры имеют аплоады в разы выше битрейтов ваш алгоритм не сильно сказывается на работе, но в реалии мы имеем подобные ситуации далеко не всегда. Поэтому необходимо внести изменения в алгоритме работы, чтобы такой круговерти не было.
« Последнее редактирование: 04 Ноября 2012, 14:40:52 от vladimir29 »
Записан

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

на картинке видно что скорость отдачи в пять раз ниже чем битрейт вещаемого виде ! Как же удаётся вещать даже с двумя пирами ??  У меня в принципе тожесамое отдача в пять раз ниже битрейта и 3 пира один из них на amazon  и ни чего не получается. Бесконечная буферизация....
1910 кБАЙТ/с то есть это около 16 мбит/с, в данном случае это нормально, учитывая down показывает щас около 8мбит/с(982 кБАЙТ/с)
Записан

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

на картинке видно что скорость отдачи в пять раз ниже чем битрейт вещаемого виде ! Как же удаётся вещать даже с двумя пирами ??  У меня в принципе тожесамое отдача в пять раз ниже битрейта и 3 пира один из них на amazon  и ни чего не получается. Бесконечная буферизация....
1910 кБАЙТ/с то есть это около 16 мбит/с, в данном случае это нормально, учитывая down показывает щас около 8мбит/с(982 кБАЙТ/с)
Картинка не моя- это Constantin опубликовал.  http://oldforum.acestream.media/index.php?topic=1448.msg5063#msg5063

1910 кБАЙТ ?? А разве это не 1910  килобит ??
кбайт :) это же очевидно, кстати в сопке тоже отдача у бродов в кбайтах пишется ;D
Записан

navip999

  • Специалист
  • Newbie
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 20

на картинке видно что скорость отдачи в пять раз ниже чем битрейт вещаемого виде ! Как же удаётся вещать даже с двумя пирами ??  У меня в принципе тожесамое отдача в пять раз ниже битрейта и 3 пира один из них на amazon  и ни чего не получается. Бесконечная буферизация....
1910 кБАЙТ/с то есть это около 16 мбит/с, в данном случае это нормально, учитывая down показывает щас около 8мбит/с(982 кБАЙТ/с)
у него битрейт 10мбит в идеале нада 100мбит аплода  :D
Записан

Maksvel

  • Full Member
  • ***
  • Оффлайн Оффлайн
  • Сообщений: 128

Constantin, скажите пожалуйста почему TSlive не принимает такой поток ???

Записан

navip999

  • Специалист
  • Newbie
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 20

Constantin, скажите пожалуйста почему TSlive не принимает такой поток ???


нужен кодек  видео h264
Записан

Пур Иванов

  • Специалист
  • Sr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 342

Constantin, скажите пожалуйста почему TSlive не принимает такой поток ???


нужен кодек  видео h264
Это не так, достаточно контейнер MPEG-TS, у меня стримит обычные мпег каналы через тс.
Записан

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

TS версии 1.0.6.8, убунту 11.10, снова началось, второй день наблюдаю следующее:
Starting TS Engine...
device id: MFIwEAYHKoZIzj0CAQYFK4EEABoD...
tracker url: http://x.x.x.x:7768/announce
bitrate: 350000
piece size: 262144
dest dir: /media/F/stream1
------------------------
createlivestream: open stream: url http://172.19.21.223:8089 reader builtin
2012-11-11 16:32:44 stream: started input thread
2012-11-11 16:32:46 stream: restarting stream from piece 420875
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
но трансляция продолжает идти
Записан

navip999

  • Специалист
  • Newbie
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 20

А у меня наоборот улучшилось :)
После увеличения оперативы ошибок стало меньше
Иногда проскакивает Closing dublicate connection, хотя конект один, upnp тоже настроил
Волнует только что оператива жрется в час ~50-100 мб и процессор нагружается, но это я думаю из-за количества смотрящих и висящих на трекере...
upd: хотя нет, сегодня проскачило  :(
Цитировать
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
« Последнее редактирование: 18 Ноября 2012, 00:51:56 от navip999 »
Записан

navip999

  • Специалист
  • Newbie
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 20

ктонить мне подскажет правильно ли я указываю трекеры?
Цитировать
--trackers http://t1.torrentstream.net:2710/announce,http://t2.torrentstream.net:2710/announce
мне кажется они должны снижать нагрузку на сеть, а то вчера у меня роутер тупил когда многа народу смотрело
и еще как параметр
Цитировать
--maxclients
влияет на раздачу?
у меня стоит 12, это нормально?
Записан

anton

  • Administrator
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 68

ктонить мне подскажет правильно ли я указываю трекеры?
Цитировать
--trackers http://t1.torrentstream.net:2710/announce,http://t2.torrentstream.net:2710/announce
мне кажется они должны снижать нагрузку на сеть, а то вчера у меня роутер тупил когда многа народу смотрело
и еще как параметр
Цитировать
--maxclients
влияет на раздачу?
у меня стоит 12, это нормально?
по трекерам - все правильно, указывается список через запятую

по maxclients - на раздачу влияет очень сильно. Указанное число определяет, скольким пирам одновременно отдаются данные. Например, вы создали трансляцию и к вам подсоединилось 300 пиров, а maxclients=10.В этом случае от вас данные будут одновременно уходить только на 10 пиров из этих 300. Это не значит, что первые 10 пиров, которые подсоединились, будут получать данные, а остальные нет. Список пиров, которым в данный момент времени нужно отдавать данные, постоянно изменяется. Не изменяется только их количество (в данном примере - десять). При выборе пиров, которым нужно отдавать данные, используется аналог алгоритма, описанного здесь: http://wiki.theory.org/BitTorrentSpecification#Choking_and_Optimistic_Unchoking

Значение maxclients=12 возможно слишком велико, из-за этого может "тупить" роутер. В следующий раз попробуйте немного уменьшить.
« Последнее редактирование: 21 Ноября 2012, 19:01:38 от Constantin »
Записан

Пур Иванов

  • Специалист
  • Sr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 342

Значение maxclients=12 возможно слишком велико, из-за этого может "тупить" роутер. В следующий раз попробуйте немного уменьшить.
у сопкаста по умолчанию тоже 12 подключений с сервером (временно до 16 может подпрыгивать)  и ничего при этом не "тупит"...  даже если запустить 10 серверов сопкаста одновременно
« Последнее редактирование: 22 Ноября 2012, 02:26:34 от Пур Иванов »
Записан

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

провел небольшой эксперимент с участием сервера поддержки, который должен играть роль основного раздающего, для этого на основном сервере TS был запущен с параметром maxclients=1, и вслед за этим сразу же запустил сервер поддержки, который успешно подключился. Далее трансляцию запускает обычный юзер и вместо того, чтобы тащить трансляцию с сервера поддержки я вижу, что он тянет ее с меня и лишь частично с сервера. Потом подключается еще один пир и в итоге наблюдается такая же картина. Очевидно, что такого не должно быть, получается, что параметр maxclients работает неверно и что сервер поддержки работает как обычный пир, что с одной стороны хорошо, так как тогда все пиры это такие же сервера поддержки, но с другой стороны в случае недостаточного аплоада у бродкастера для раздачи на несколько пиров, трансляция может быть испорчена.
В дальнейшем бы хотелось бы видеть отдельный node-сервер для ts, т.е. чтобы он запускался как слушающий сервер поддержки с авторизацией в фоновом режиме  и имел веб-интерфейс для просмотра статистики, например, при запуске основного сервера указывается определенный параметр с адресом узла поддержки(с портом) и ключом авторизации(чтобы все подряд бродкастеры нахаляву не подключались к узлу), а также неплохо бы сделать опцию для запуска в режиме отдачи только узлу поддержки если это требуется бродкастеру в случае небольшой отдачи. Ну и еще одно пожелание: возможность отключения или отдельного запуска трекера для тс, либо его оптимизация, так как он довольно прилично загружает процессор
Записан