Site Tools


software:msd:config

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
software:msd:config [2014/10/20 00:18]
– [streamProxy] root
software:msd:config [2022/02/04 18:52] (current)
root
Line 1: Line 1:
-====== Настройки ====== 
- 
 Конфиг файл представляет из себя xml файл.\\ Конфиг файл представляет из себя xml файл.\\
 Размер в килобайтах, время в секундах, кроме параметров для которых явно указаны другие размерности.\\ Размер в килобайтах, время в секундах, кроме параметров для которых явно указаны другие размерности.\\
Line 30: Line 28:
 ---- ----
  
-===== log =====+====== log ======
 Лог файл. Лог файл.
  
Line 37: Line 35:
 </log></code> </log></code>
  
-==== file ====+===== file =====
 Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout. Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout.
  
 ---- ----
  
-===== threadPool =====+====== threadPool ======
 Настройки пула потоков. Настройки пула потоков.
  
Line 52: Line 50:
 </threadPool></code> </threadPool></code>
  
-==== threadsCount ====+===== threadsCount =====
 Количество потоков. Если 0 = автоматически по количеству доступных ядер в системе. Количество потоков. Если 0 = автоматически по количеству доступных ядер в системе.
  
-==== fBindToCPU====+===== fBindToCPU =====
 Прикреплять потоки к процессорным ядрам. Если флаг задан то каждый поток будет выполнятся всегда только на одном ядре процессора. Такое поведение позволяет более эффективно использовать процессорный кеш. Прикреплять потоки к процессорным ядрам. Если флаг задан то каждый поток будет выполнятся всегда только на одном ядре процессора. Такое поведение позволяет более эффективно использовать процессорный кеш.
  
-==== fCacheGetTimeSyscall ====+===== fCacheGetTimeSyscall =====
 Кешировать системный вызов clock_gettime(). \\ Кешировать системный вызов clock_gettime(). \\
 clock_gettime() будет вызываться с задержкой указанной в [[software:msd:config#timerGranularity|timerGranularity]].\\ clock_gettime() будет вызываться с задержкой указанной в [[software:msd:config#timerGranularity|timerGranularity]].\\
Line 64: Line 62:
 На FreeBSD экономия будет меньше заметна.\\ На FreeBSD экономия будет меньше заметна.\\
  
-==== timerGranularity ====+===== timerGranularity =====
 Задержка между вызовами clock_gettime() для обновления времени.\\ Задержка между вызовами clock_gettime() для обновления времени.\\
 Измеряется как 1/1000 секунды. Например: 100 означает 10 раз в секунду, 1000 - один раз в секунду.\\ Измеряется как 1/1000 секунды. Например: 100 означает 10 раз в секунду, 1000 - один раз в секунду.\\
Line 71: Line 69:
 ---- ----
  
-===== systemResourceLimits =====+====== systemResourceLimits ======
 Задаются лимиты системных ресурсов для msd. Задаются лимиты системных ресурсов для msd.
  
Line 81: Line 79:
 </systemResourceLimits></code> </systemResourceLimits></code>
  
-==== maxOpenFiles ====+===== maxOpenFiles =====
 Максимально доступное для msd количество файлов/сокетов/таймеров (для linux). Максимально доступное для msd количество файлов/сокетов/таймеров (для linux).
  
-==== maxCoreFileSize ====+===== maxCoreFileSize =====
 Разрешить записывать дамп памяти (указанного размера) в случае сбоя приложения. Разрешить записывать дамп памяти (указанного размера) в случае сбоя приложения.
  
-==== maxMemLock ====+===== maxMemLock =====
 Максимально доступный объём памяти которую можно блокировать. Максимально доступный объём памяти которую можно блокировать.
  
-==== processPriority ====+===== processPriority =====
 Приоритет выполнения msd в системе: -20 = высокий, 20 = низкий, 0 = по умолчанию. Приоритет выполнения msd в системе: -20 = высокий, 20 = низкий, 0 = по умолчанию.
  
 ---- ----
  
-===== HTTP =====+====== HTTP ======
 Настройки HTTP сервера. Настройки HTTP сервера.
  
Line 134: Line 132:
 </HTTP></code> </HTTP></code>
  
-==== ioBufInitSize ====+===== ioBufInitSize =====
 Начальный размер буфера для приёма http запроса от клиента. Начальный размер буфера для приёма http запроса от клиента.
  
-==== ioBufMaxSize ====+===== ioBufMaxSize =====
 Максимальный размер буфера для приёма http запроса от клиента. Максимальный размер буфера для приёма http запроса от клиента.
  
-==== skt ====+===== skt =====
 Настройки сокета клиента. Настройки сокета клиента.
  
-=== rcvBuf ===+==== rcvBuf ====
 Максимальный размер буфера для приёма (SO_RCVBUF). Максимальный размер буфера для приёма (SO_RCVBUF).
  
-=== sndBuf ===+==== sndBuf ====
 Максимальный размер буфера для отправки (SO_SNDBUF). Максимальный размер буфера для отправки (SO_SNDBUF).
  
-=== rcvTimeout ===+==== rcvTimeout ====
 Таймаут приёма запроса от клиента. Таймаут приёма запроса от клиента.
  
-=== sndTimeout ===+==== sndTimeout ====
 Таймаут отправки ответа клиенту. Таймаут отправки ответа клиенту.
  
-==== bindList, bind ====+===== bindList, bind =====
 bindList содержит секции bind, в которых описывается на каких адресах принимать запросы от клиентов и дополнительные параметры. bindList содержит секции bind, в которых описывается на каких адресах принимать запросы от клиентов и дополнительные параметры.
  
-=== address ===+==== address ====
 IPv4Address:Port или [IPv6Address]:Port на котором принимать клиентские запросы. IPv4Address:Port или [IPv6Address]:Port на котором принимать клиентские запросы.
  
-=== ifName ===+==== ifName ====
 Имя интерфейса, не обязательно, если задано то <address> IPv4 или IPv6 заменяется соответствующим IPv4 или IPv6 адресом на указанном интерфейсе перед вызовом bind(). Если на указанном интерфейсе нет IP адреса то выдаётся ошибка, если адресов несколько - используется первый полученный. Имя интерфейса, не обязательно, если задано то <address> IPv4 или IPv6 заменяется соответствующим IPv4 или IPv6 адресом на указанном интерфейсе перед вызовом bind(). Если на указанном интерфейсе нет IP адреса то выдаётся ошибка, если адресов несколько - используется первый полученный.
  
-=== backlog ===+==== backlog ====
 Максимальное количество ожидающих в очереди на подключение (listen(..., backlog) ). Максимальное количество ожидающих в очереди на подключение (listen(..., backlog) ).
  
-=== fAcceptFilter ===+==== fAcceptFilter ====
 Использовать SO_ACCEPTFILTER(httpready) для FreeBSD (accf_http модуль должен быть загружен) либо TCP_DEFER_ACCEPT под linux.\\ Использовать SO_ACCEPTFILTER(httpready) для FreeBSD (accf_http модуль должен быть загружен) либо TCP_DEFER_ACCEPT под linux.\\
 Использование данного флага позволяет уменьшить использование CPU при большом количестве HTTP запросов. Использование данного флага позволяет уменьшить использование CPU при большом количестве HTTP запросов.
  
-=== congestionControl ===+==== congestionControl ====
 TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\ TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\
 Позволяет выжать максимум из канала при передаче клиенту.\\ Позволяет выжать максимум из канала при передаче клиенту.\\
Line 177: Line 175:
  
  
-==== hostnameList, hostname ====+===== hostnameList, hostname =====
 Список доменных имён которые ассоциированы с этим адресом.\\ Список доменных имён которые ассоциированы с этим адресом.\\
 Данная подсекция может быть как в HTTP, тогда она применяется ко всем подсекциям в bindList, так и в отдельной подсекции bind, тогда заданные имена будут считатся локальными только для клиентов которые подключились на указанный в bind адрес. Данная подсекция может быть как в HTTP, тогда она применяется ко всем подсекциям в bindList, так и в отдельной подсекции bind, тогда заданные имена будут считатся локальными только для клиентов которые подключились на указанный в bind адрес.
  
-=== hostname ===+==== hostname ====
 Доменное имя или "*" - для любого имени.\\ Доменное имя или "*" - для любого имени.\\
 IP адреса проверяются автоматически, не имеет смысла добавлять их в этот список. IP адреса проверяются автоматически, не имеет смысла добавлять их в этот список.
Line 187: Line 185:
 ---- ----
  
-===== limits =====+====== limits ======
 Лимиты применяемые к параметрам в URL запросов клиентов. См [[software:msd:urls#Дополнительные параметры|URLs, Дополнительные параметры]]. Лимиты применяемые к параметрам в URL запросов клиентов. См [[software:msd:urls#Дополнительные параметры|URLs, Дополнительные параметры]].
  
Line 197: Line 195:
 </limits></code> </limits></code>
  
-==== precacheMin, precacheMax ====+===== precacheMin, precacheMax =====
 В килобайтах, минимальное и максимальное значение precache доступное клиенту. Минимальное не может быть меньше 0, максимальное ограничено размером кольцевого буфера активного источника.\\ В килобайтах, минимальное и максимальное значение precache доступное клиенту. Минимальное не может быть меньше 0, максимальное ограничено размером кольцевого буфера активного источника.\\
 Ограничивает значение [[software:msd:urls#precache|precache в URL запросе клиента]]. Ограничивает значение [[software:msd:urls#precache|precache в URL запросе клиента]].
  
-==== sndBlockSizeMin, sndBlockSizeMax ====+===== sndBlockSizeMin, sndBlockSizeMax =====
 В килобайтах, минимальное и максимальное значение sndBlockSize. В основном это значение влияет на производительность, как сервера так и клиента. Если указано слишком маленькое значение, то сервер будет часто пытаться отправить данные клиенту вызывая send(), это приведёт к повешению нагрузки на CPU. Если значение слишком большое, то сервер будет отправлять клиенту большие блоки данных, это может привести к тому, что различные пристаки/плееры со слабы процессором будут слишком активно и долго загружать свой CPU чтобы переместить принятые данные из буфера сокета в буфер плеера, что приведёт к заиканиям звука.\\ В килобайтах, минимальное и максимальное значение sndBlockSize. В основном это значение влияет на производительность, как сервера так и клиента. Если указано слишком маленькое значение, то сервер будет часто пытаться отправить данные клиенту вызывая send(), это приведёт к повешению нагрузки на CPU. Если значение слишком большое, то сервер будет отправлять клиенту большие блоки данных, это может привести к тому, что различные пристаки/плееры со слабы процессором будут слишком активно и долго загружать свой CPU чтобы переместить принятые данные из буфера сокета в буфер плеера, что приведёт к заиканиям звука.\\
 Минимальное значение 0, но на самом деле они ограничено параметром rcvLowat источника.\\ Минимальное значение 0, но на самом деле они ограничено параметром rcvLowat источника.\\
Line 211: Line 209:
 ---- ----
  
-===== hubProfileList, hubProfile =====+====== hubProfileList, hubProfile ======
 hubProfileList содержит список шаблонов настроек Stream Hub - hubProfile, каждому hubProfile присваивается уникальное имя. hubProfileList содержит список шаблонов настроек Stream Hub - hubProfile, каждому hubProfile присваивается уникальное имя.
  
Line 217: Line 215:
  <hubProfile>  <hubProfile>
  <name>default</name>  <name>default</name>
- <fZeroCliPersistent>yes</fZeroCliPersistent> + <fZeroCliPersistent>no</fZeroCliPersistent> 
- <fZeroSrcBitratePersistent>yes</fZeroSrcBitratePersistent>+ <fZeroSrcBitratePersistent>no</fZeroSrcBitratePersistent>
  <fPrecacheWait>no</fPrecacheWait>  <fPrecacheWait>no</fPrecacheWait>
  <fUsePollingForSend>no</fUsePollingForSend>  <fUsePollingForSend>no</fUsePollingForSend>
  <fDropSlowClients>no</fDropSlowClients>  <fDropSlowClients>no</fDropSlowClients>
- <fMPEG2TSAnalyzing>yes</fMPEG2TSAnalyzing>+ <fMPEG2TSAnalyzing>no</fMPEG2TSAnalyzing>
  <fSocketHalfClosed>no</fSocketHalfClosed>  <fSocketHalfClosed>no</fSocketHalfClosed>
- <fSocketTCPNoDelay>yes<fSocketTCPNoDelay> + <fSocketTCPNoDelay>no<fSocketTCPNoDelay> 
- <fSocketTCPNoPush>yes</fSocketTCPNoPush>+ <fSocketTCPNoPush>no</fSocketTCPNoPush>
  <fZeroCopyOnSend>no</fZeroCopyOnSend>  <fZeroCopyOnSend>no</fZeroCopyOnSend>
  <ringBufSize>32768</ringBufSize>  <ringBufSize>32768</ringBufSize>
Line 248: Line 246:
 </hubProfileList></code> </hubProfileList></code>
  
-==== name ====+===== name =====
 Уникальное имя для hubProfile. Уникальное имя для hubProfile.
  
-==== fZeroCliPersistent ====+===== fZeroCliPersistent =====
 Продолжать работать даже если все клиенты отключились. Для каналов заданных в конфиге всегда выставлен. Если флаг не выставлен то хаб уничтожается по истечении времени [[software:msd:config#zeroCliTimeout|zeroCliTimeout]]. Продолжать работать даже если все клиенты отключились. Для каналов заданных в конфиге всегда выставлен. Если флаг не выставлен то хаб уничтожается по истечении времени [[software:msd:config#zeroCliTimeout|zeroCliTimeout]].
  
-==== fZeroSrcBitratePersistent ====+===== fZeroSrcBitratePersistent =====
 Продолжать работать даже если все источники ничего не вещают. Для каналов заданных в конфиге всегда выставлен. Продолжать работать даже если все источники ничего не вещают. Для каналов заданных в конфиге всегда выставлен.
  
-==== fPrecacheWait ====+===== fPrecacheWait =====
 Ожидать пока в кольцевом буфере накопится заданное в precache параметре конфига/запроса количество данных чтобы отправить их клиенту.\\ Ожидать пока в кольцевом буфере накопится заданное в precache параметре конфига/запроса количество данных чтобы отправить их клиенту.\\
 Используется чтобы гарантировать что только что подключённый клиент сможет сразу получить указанное количество данных. Используется чтобы гарантировать что только что подключённый клиент сможет сразу получить указанное количество данных.
  
-==== fUsePollingForSend ====+===== fUsePollingForSend =====
 Добавлять сокет клиента в kqueue/epoll.\\ Добавлять сокет клиента в kqueue/epoll.\\
 Клиенты в kqueue/epoll добавляются если количество данных которые нужно отправить клиенту из кольцевого буфера больше чем sndBlock для данного клиента.\\ Клиенты в kqueue/epoll добавляются если количество данных которые нужно отправить клиенту из кольцевого буфера больше чем sndBlock для данного клиента.\\
 Обычно это случается во время отправки прекеша, если у клиента проблемы с задеркажми/потерей пакетов и он медленно принимает. Так же есть клиенты с маленьким буфером сокета (обычно VLC), они всегда висят в поллинге тк не могут принять всех данных которые для них доступны. Обычно это случается во время отправки прекеша, если у клиента проблемы с задеркажми/потерей пакетов и он медленно принимает. Так же есть клиенты с маленьким буфером сокета (обычно VLC), они всегда висят в поллинге тк не могут принять всех данных которые для них доступны.
  
-==== fDropSlowClients ====+===== fDropSlowClients =====
 Отключать клиентов которые медленно принимают данные. Отключать клиентов которые медленно принимают данные.
 Если флаг выключен то клиентам будет пере запускаться вещание с пропуском/потерей данных в размере: [[software:msd:config#zeroCliTimeout|ringBufSize]] - [[software:msd:config#precache|precache]]. Если флаг выключен то клиентам будет пере запускаться вещание с пропуском/потерей данных в размере: [[software:msd:config#zeroCliTimeout|ringBufSize]] - [[software:msd:config#precache|precache]].
  
-==== fMPEG2TSAnalyzing ====+===== fMPEG2TSAnalyzing =====
 Форсировать выставление флага для всех источников данного хаба. Если флаг выставлен то поток MPEG2-TS подвергается анализу: выделяются служебные пакеты, пакеты с данными, строятся PSI таблицы, подсчитывается количество пакетов, CC ошибок и прочих типов ошибок для каждого PID в потоке, лишние PID (на которые нет ссылок в PAT+PMT таблицах) отбрасываются.\\ Форсировать выставление флага для всех источников данного хаба. Если флаг выставлен то поток MPEG2-TS подвергается анализу: выделяются служебные пакеты, пакеты с данными, строятся PSI таблицы, подсчитывается количество пакетов, CC ошибок и прочих типов ошибок для каждого PID в потоке, лишние PID (на которые нет ссылок в PAT+PMT таблицах) отбрасываются.\\
 Так же этот флаг выключает отсылку всех служебных MPEG2-TS данных новым клиентам перед отправкой данных из кольцевого буфера, что позволяет клиентам не отбрасывать пакеты в поисках пакетов со служебной информацией.\\ Так же этот флаг выключает отсылку всех служебных MPEG2-TS данных новым клиентам перед отправкой данных из кольцевого буфера, что позволяет клиентам не отбрасывать пакеты в поисках пакетов со служебной информацией.\\
 Побочный эффект: дополнительная нагрузка на процессор и увеличение потребления памяти, не значительное на фоне памяти отведённой для кольцевого буфера [[software:msd:config#ringBufSize|ringBufSize]]. Побочный эффект: дополнительная нагрузка на процессор и увеличение потребления памяти, не значительное на фоне памяти отведённой для кольцевого буфера [[software:msd:config#ringBufSize|ringBufSize]].
  
-==== fSocketHalfClosed ====+===== fSocketHalfClosed =====
 Вызывать shutdown(SHUT_RD) для клиентов.\\ Вызывать shutdown(SHUT_RD) для клиентов.\\
 Явно указывает клиенту что больше данные передавать на сервер нельзя.\\ Явно указывает клиенту что больше данные передавать на сервер нельзя.\\
 Некоторые клиенты ошибочно принимают за закрытие соединения и отключаются. Некоторые клиенты ошибочно принимают за закрытие соединения и отключаются.
  
-==== fSocketTCPNoDelay ====+===== fSocketTCPNoDelay =====
 Выставлять TCP_NODELAY флаг на сокет клиента. Выставлять TCP_NODELAY флаг на сокет клиента.
  
-==== fSocketTCPNoPush ====+===== fSocketTCPNoPush =====
 Выставлять TCP_NOPUSH FreeBSD / TCP_CORK Linux флаг на сокет клиента. Выставлять TCP_NOPUSH FreeBSD / TCP_CORK Linux флаг на сокет клиента.
  
-==== fZeroCopyOnSend ====+===== fZeroCopyOnSend ====
 +ZCoS\\
 Использовать sendfile() вместо sendmsg().\\ Использовать sendfile() вместо sendmsg().\\
 Использование sendfile() позволяет уменьшить нагрузку на процессор при отправке данных клиентам за счёт уменьшения количества операций копирования, всю работу берёт на себя ядро операционной системы. Использование sendfile() позволяет уменьшить нагрузку на процессор при отправке данных клиентам за счёт уменьшения количества операций копирования, всю работу берёт на себя ядро операционной системы.
-см так же [[software:msd:config#ringBufStorePath|ringBufStorePath]]+см так же [[software:msd:config#ringBufStorePath|ringBufStorePath]]\\ 
 +Эффект особенно заметен на качественный сетевых адаптерах с включённым offloading опциями.
  
-==== flagMergeSources ====+===== flagMergeSources =====
 Экспериментальная возможность объединения потоков разных источников с целью коррекции ошибок, запланировано на будущее. Экспериментальная возможность объединения потоков разных источников с целью коррекции ошибок, запланировано на будущее.
  
-==== ringBufSize ====+===== ringBufSize =====
 В килобайтах, форсировать выставление размера кольцевого буфера для всех источников данного хаба. В килобайтах, форсировать выставление размера кольцевого буфера для всех источников данного хаба.
  
-==== ringBufStorePath ====+===== ringBufStorePath =====
 Путь к файлам где хранить файлы с содержимым кольцевого буфера.\\ Путь к файлам где хранить файлы с содержимым кольцевого буфера.\\
 Актуально только когда выставлен флаг [[software:msd:config#fZeroCopyOnSend|fZeroCopyOnSend]]\\ Актуально только когда выставлен флаг [[software:msd:config#fZeroCopyOnSend|fZeroCopyOnSend]]\\
Line 303: Line 303:
 Рекомендуется хранить файлы в tmpfs.\\ Рекомендуется хранить файлы в tmpfs.\\
  
-=== Особенности ===+==== Особенности ====
 Если msd аварийно завершился то требуется ручное удаление файлов кольцевых буферов, кроме shm под FreeBSD 10 и выше.\\ Если msd аварийно завершился то требуется ручное удаление файлов кольцевых буферов, кроме shm под FreeBSD 10 и выше.\\
  
Line 313: Line 313:
  
  
-==== zeroCliTimeout ====+===== zeroCliTimeout =====
 В секундах, время для уничтожения хаба без клиентов, если не выставлен флаг [[software:msd:config#fZeroCliPersistent|fZeroCliPersistent]]. В секундах, время для уничтожения хаба без клиентов, если не выставлен флаг [[software:msd:config#fZeroCliPersistent|fZeroCliPersistent]].
  
-==== errorRateInterval ====+===== errorRateInterval =====
 В секундах, форсировать выставление интервала времени для подсчёта ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба. В секундах, форсировать выставление интервала времени для подсчёта ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба.
  
-==== errorRateMax ====+===== errorRateMax =====
 Форсировать выставление максимального количества ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба. Форсировать выставление максимального количества ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба.
  
-==== precache ====+===== precache =====
 В килобайтах, значение прекеша по умолчанию. Указывает сколько килобайт будет отправлено новому клиенту сразу после подключения из кольцевого буфера источника. Клиент может переопределить это значение в URL запроса. Не может превышать [[software:msd:config#ringBufSize|ringBufSize]] для активного источника.\\ В килобайтах, значение прекеша по умолчанию. Указывает сколько килобайт будет отправлено новому клиенту сразу после подключения из кольцевого буфера источника. Клиент может переопределить это значение в URL запроса. Не может превышать [[software:msd:config#ringBufSize|ringBufSize]] для активного источника.\\
 Так же [[software:msd:urls#precache|задаётся в URL запроса клиента]].\\ Так же [[software:msd:urls#precache|задаётся в URL запроса клиента]].\\
 Имеет [[software:msd:config#precacheMin, precacheMax|настраиваемые лимиты]]. Имеет [[software:msd:config#precacheMin, precacheMax|настраиваемые лимиты]].
  
-==== sndBlockSize ====+===== sndBlockSize =====
 В килобайтах, значение размера блока отправки по умолчанию.\\ В килобайтах, значение размера блока отправки по умолчанию.\\
 Так же [[software:msd:urls#blocksize|задаётся в URL запроса клиента]].\\ Так же [[software:msd:urls#blocksize|задаётся в URL запроса клиента]].\\
 [[software:msd:config#sndBlockSizeMin, sndBlockSizeMax|Подробное описание параметра см в секции limits]]. [[software:msd:config#sndBlockSizeMin, sndBlockSizeMax|Подробное описание параметра см в секции limits]].
  
-==== skt ====+===== skt =====
 Настройки клиентских сокетов Настройки клиентских сокетов
  
-=== sndBuf ===+==== sndBuf ====
 Максимальный размер буфера для отправки клиенту (SO_SNDBUF). Максимальный размер буфера для отправки клиенту (SO_SNDBUF).
  
-=== sndTimeout ===+==== sndTimeout ====
 Таймаут отправки данных клиенту. Таймаут отправки данных клиенту.
  
-=== congestionControl ===+==== congestionControl ====
 TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\ TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\
 Позволяет выжать максимум из канала при передаче клиенту.\\ Позволяет выжать максимум из канала при передаче клиенту.\\
Line 347: Line 347:
 [[software:msd:urls#tcpcc|Очерёдность применения]]. [[software:msd:urls#tcpcc|Очерёдность применения]].
  
-==== headersList ====+===== headersList =====
  
-=== header ===+==== header ====
 Дополнительный HTTP заголовок и его значение добавляемые перед отправкой клиенту данных из кольцевого буфера.\\ Дополнительный HTTP заголовок и его значение добавляемые перед отправкой клиенту данных из кольцевого буфера.\\
 Такие заголовки требуются некоторым UPnP/DLNA клиентам для работы. Такие заголовки требуются некоторым UPnP/DLNA клиентам для работы.
Line 355: Line 355:
 ---- ----
  
-===== sourceProfileList, sourceProfile =====+====== sourceProfileList, sourceProfile ======
 sourceProfileList содержит список шаблонов настроек источников потока - sourceProfile, каждому sourceProfileприсваивается уникальное имя. sourceProfileList содержит список шаблонов настроек источников потока - sourceProfile, каждому sourceProfileприсваивается уникальное имя.
  
Line 408: Line 408:
 </sourceProfileList></code> </sourceProfileList></code>
  
-==== name ====+===== name =====
 Уникальное имя для sourceProfile. Уникальное имя для sourceProfile.
  
-==== fMPEG2TSAnalyzing ====+===== fMPEG2TSAnalyzing =====
 Если флаг выставлен то поток MPEG2-TS подвергается анализу. [[software:msd:config#fMPEG2TSAnalyzing|Подробнее в секции hubProfile]]. Если флаг выставлен то поток MPEG2-TS подвергается анализу. [[software:msd:config#fMPEG2TSAnalyzing|Подробнее в секции hubProfile]].
  
-==== ringBufSize ====+===== ringBufSize =====
 В килобайтах, размер кольцевого буфера. Не рекомендуется делать меньше, чем нужно для буферизации 2-5 секунд потока. Больше 32 мегабайт имеет смысл только для компенсации очень больших потерь во время приёма от HTTP источника. Меньше 4-8 мегабайт целесообразно ставить для радиостанций. В килобайтах, размер кольцевого буфера. Не рекомендуется делать меньше, чем нужно для буферизации 2-5 секунд потока. Больше 32 мегабайт имеет смысл только для компенсации очень больших потерь во время приёма от HTTP источника. Меньше 4-8 мегабайт целесообразно ставить для радиостанций.
  
-==== errorRateInterval ====+===== errorRateInterval =====
 В секундах, интервал времени для подсчёта ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]]. В секундах, интервал времени для подсчёта ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]].
  
-==== errorRateMax ====+===== errorRateMax =====
 Максимальное количество ошибок за интервал времени если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]], по достижении на источнике выставляется флаг и может быть произведено переключение на следующий по списку источник. Максимальное количество ошибок за интервал времени если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]], по достижении на источнике выставляется флаг и может быть произведено переключение на следующий по списку источник.
  
-==== skt ====+===== skt =====
 Настройки принимающего сокета источника. Настройки принимающего сокета источника.
  
-=== rcvBuf ===+==== rcvBuf ====
 Максимальный размер буфера для приёма (SO_RCVBUF). Максимальный размер буфера для приёма (SO_RCVBUF).
  
-=== rcvLowat ===+==== rcvLowat ====
 Минимальный размер данных в буфере сокета для начала считывания в кольцевой буфер и анализа (если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]]) (SO_RCVLOWAT).\\ Минимальный размер данных в буфере сокета для начала считывания в кольцевой буфер и анализа (если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]]) (SO_RCVLOWAT).\\
-На Linux данный параметр игнорируется и чтение для udp осуществляется по пакетно, что ощутимо повышает нагрузку, для tcp по мере поступления данных. +На Linux данный параметр игнорируется ядром и чтение для udp осуществляется по пакетно, что ощутимо повышает нагрузку.\\ 
- +Для tcp чтение осуществляется по мере поступления данных.\\ 
-=== rcvTimeout ===+Для Linux данный параметр реализован в программе, что позволило немножко сэкономить ресурсы процессора. 
 +==== rcvTimeout ====
 Таймаут приёма данных, после достижении источник считается не работающим и либо производится попытка переключения на другой источник либо клиенты отключены а хаб уничтожен, зависит от настроек хаба: флаг [[software:msd:config#fZeroSrcBitratePersistent|fZeroSrcBitratePersistent]] Таймаут приёма данных, после достижении источник считается не работающим и либо производится попытка переключения на другой источник либо клиенты отключены а хаб уничтожен, зависит от настроек хаба: флаг [[software:msd:config#fZeroSrcBitratePersistent|fZeroSrcBitratePersistent]]
  
-==== udp ====+===== udp =====
 Настройки и информация для подключения UDP источника. Настройки и информация для подключения UDP источника.
  
-=== address ===+==== address ====
 IPv4Address:Port или [IPv6Address]:Port. Данная подсекция в секции sourceProfile даётся только для примера, поскольку для динамического хаба этот параметр извлекается из URL запроса, а для статического хаба подразумевается что он будет задан в настрокойках источника канала. IPv4Address:Port или [IPv6Address]:Port. Данная подсекция в секции sourceProfile даётся только для примера, поскольку для динамического хаба этот параметр извлекается из URL запроса, а для статического хаба подразумевается что он будет задан в настрокойках источника канала.
  
-==== multicast ====+===== multicast =====
 Настройки и информация для подключения multicast источника. Так же должны присутствовать настройки для UDP. Настройки и информация для подключения multicast источника. Так же должны присутствовать настройки для UDP.
  
-=== ifName ===+==== ifName ====
 Имя интерфейса для подписки на multicast. Используется как значение по умолчанию. Имя интерфейса для подписки на multicast. Используется как значение по умолчанию.
  
-==== tcp ====+===== tcp =====
 Настройки и информация для подключения TCP источника. Настройки и информация для подключения TCP источника.
  
-=== remonteHostname ===+==== remonteHostname ====
 IPv4Address:Port или [IPv6Address]:Port. Адрес для tcp, tcp-http подключения к источнику. Данная подсекция в секции sourceProfile даётся только для примера, поскольку для динамического хаба этот параметр извлекается из URL запроса, а для статического хаба подразумевается что он будет задан в настрокойках источника канала. IPv4Address:Port или [IPv6Address]:Port. Адрес для tcp, tcp-http подключения к источнику. Данная подсекция в секции sourceProfile даётся только для примера, поскольку для динамического хаба этот параметр извлекается из URL запроса, а для статического хаба подразумевается что он будет задан в настрокойках источника канала.
  
-=== connectTimeout ===+==== connectTimeout ====
 В секундах, таймаут подключения. В секундах, таймаут подключения.
  
-=== reconnectInterval ===+==== reconnectInterval ====
 В секундах, задержка перед следующей попыткой подключения. В секундах, задержка перед следующей попыткой подключения.
  
-=== reconnectCount ===+==== reconnectCount ====
 Количество попыток подключения. Количество попыток подключения.
  
-=== fSocketHalfClosed ===+==== fSocketHalfClosed ====
 Использовать полу закрытые соединения (Half Closed Connections).\\ Использовать полу закрытые соединения (Half Closed Connections).\\
 Вызывать shutdown(SHUT_WR) сразу после: подключения (для TCP) / отправки запроса (HTTP).\\ Вызывать shutdown(SHUT_WR) сразу после: подключения (для TCP) / отправки запроса (HTTP).\\
Line 469: Line 470:
 Некоторые реализации HTTP серверов и HTTP прокси не поддерживают полу закрытые соединения. Некоторые реализации HTTP серверов и HTTP прокси не поддерживают полу закрытые соединения.
  
-==== http ====+===== http =====
 Настройки и информация для подключения HTTP источника. Так же должны присутствовать настройки для TCP. Настройки и информация для подключения HTTP источника. Так же должны присутствовать настройки для TCP.
  
-=== urlPath ===+==== urlPath ====
 Строка для GET запроса: GET /%urlPath% Строка для GET запроса: GET /%urlPath%
  
-=== headersList ===+==== headersList ====
 Дополнительные HTTP заголовки и их значения добавляемые в запрос. Дополнительные HTTP заголовки и их значения добавляемые в запрос.
  
 ---- ----
  
-===== streamProxy =====+====== streamProxy ======
 Настройки динамически генерируемых стрим хабов. Настройки динамически генерируемых стрим хабов.
 См [[software:msd:index#Виды Stream Hub|Виды Stream Hub]] См [[software:msd:index#Виды Stream Hub|Виды Stream Hub]]
Line 502: Line 503:
 </streamProxy></code> </streamProxy></code>
  
-==== Общие настройки динамических Stream Hub ====+===== Общие настройки динамических Stream Hub =====
 Эти настройки одинаковые для всех динамических Stream Hub. Эти настройки одинаковые для всех динамических Stream Hub.
  
-=== flagEnable ===+==== fEnable ====
 Разрешить использование динамическим прокси. Разрешить использование динамическим прокси.
  
-=== hubProfileName ===+==== hubProfileName ====
 Имя профиля с настройками Stream Hub, см [[software:msd:config#hubProfileList, hubProfile|hubProfileList, hubProfile]] Имя профиля с настройками Stream Hub, см [[software:msd:config#hubProfileList, hubProfile|hubProfileList, hubProfile]]
  
-=== sourceProfileName ===+==== sourceProfileName ====
 Имя профиля с настройками источника, см [[software:msd:config#sourceProfileList, sourceProfile|sourceProfileList, sourceProfile]] Имя профиля с настройками источника, см [[software:msd:config#sourceProfileList, sourceProfile|sourceProfileList, sourceProfile]]
  
 ---- ----
  
-===== channelList =====+====== channelList ======
 В секции содержится описание каналов (Stream Hub + источники).\\ В секции содержится описание каналов (Stream Hub + источники).\\
 Описание каналов может быть вынесено во множество внешних файлов. Описание каналов может быть вынесено во множество внешних файлов.
Line 566: Line 567:
 </code> </code>
  
-==== includeFile ====+===== includeFile =====
 путь к файлу с каналами. Параметр не обязательный. Можно использовать много раз для загрузки каналов из множества файлов. путь к файлу с каналами. Параметр не обязательный. Можно использовать много раз для загрузки каналов из множества файлов.
  
-==== channel ====+===== channel =====
 Описание канала.\\ Описание канала.\\
 Включается в себя Stream Hub и как минимум один источник.\\ Включается в себя Stream Hub и как минимум один источник.\\
Line 582: Line 583:
  
  
-=== name ===+==== name ====
 Уникальное имя канала.\\ Уникальное имя канала.\\
 По этому имени клиенты будут подключатся к Stream Hub.\\ По этому имени клиенты будут подключатся к Stream Hub.\\
Line 590: Line 591:
 Рекомендую использовать окончание ".ts", это требуется некоторым плеерам, типа WMP, для корректной работы.\\ Рекомендую использовать окончание ".ts", это требуется некоторым плеерам, типа WMP, для корректной работы.\\
  
-=== hubProfileName ===+==== hubProfileName ====
 Имя шаблона настроек Stream Hub, см [[software:msd:config#hubProfileList, hubProfile|hubProfileList, hubProfile]] Имя шаблона настроек Stream Hub, см [[software:msd:config#hubProfileList, hubProfile|hubProfileList, hubProfile]]
  
-=== sourceList, source ===+==== sourceList, source ====
 Список настроек источников потока.\\ Список настроек источников потока.\\
 Настройки источника потока.\\ Настройки источника потока.\\
Line 604: Line 605:
 Флаги не могут быть сброшены, только установлены.\\ Флаги не могут быть сброшены, только установлены.\\
  
-== type ==+=== type ===
 Тип источника потока, доступны следующие типы: Тип источника потока, доступны следующие типы:
   * udp   * udp
Line 614: Line 615:
   * tcp-http-hls - не реализовано   * tcp-http-hls - не реализовано
  
-== sourceProfileName ==+=== sourceProfileName ===
 Имя шаблона источника потока, см [[software:msd:config#sourceProfileList, sourceProfile|sourceProfileList, sourceProfile]].\\ Имя шаблона источника потока, см [[software:msd:config#sourceProfileList, sourceProfile|sourceProfileList, sourceProfile]].\\
  
software/msd/config.1413764338.txt.gz · Last modified: 2014/10/20 00:18 by root