Назад | Перейти на главную страницу

icecast2 на debian зависает после ~ 1000 подключений

Я использую icecast2 (от apt-get) в Debian (или Ubunto, протестировал оба). 8 ГБ ОЗУ, 4 ядра процессора, 3 потока.

Сервер настроен на ограничение в 20K соединений в конфигурации XML, но когда он получил ~ 1000 соединений, он зависает.

Я тестирую с реальным клиентом, но также и с curl --silent --output /dev/null http://localhost:8001/livemusic из localhost.

Я также попытался запустить другой вручную на порту 8001, поэтому я смог запустить еще 1000 подключений, и он снова зависает.

Что мне нужно сделать ?

 <limits>
    <clients>20000</clients>
    <sources>9</sources>
    <queue-size>10485760</queue-size>
    <client-timeout>30</client-timeout>
    <header-timeout>15</header-timeout>
<threadpool>30</threadpool>
    <source-timeout>10</source-timeout>
    <!-- If enabled, this will provide a burst of data when a client 
         first connects, thereby significantly reducing the startup 
         time for listeners that do substantial buffering. However,
         it also significantly increases latency between the source
         client and listening client.  For low-latency setups, you
         might want to disable this. -->
    <burst-on-connect>1</burst-on-connect>
    <!-- same as burst-on-connect, but this allows for being more
         specific on how much to burst. Most people won't need to
         change from the default 64k. Applies to all mountpoints  -->
    <burst-size>131072</burst-size>
</limits>

Скорее всего, процесс ледовой заливки имеет низкий предел, например 1024.

Добавление такой строки в /etc/init.d/icecast2, прямо перед запуском демона должна работать:

ulimit -n 25000

Обратите внимание, что в случае Icecast у вас, скорее всего, закончится пропускная способность раньше всего. В большинстве случаев это очень эффективно с точки зрения ресурсов.