icecast2 на Debian зависает после ~ 1000 подключений
Я использую icecast2 (из apt-get) на Debian (или Ubunto, протестировал оба). 8 ГБ ОЗУ, 4 ядра ЦП, 3 потока.
Сервер настроен на ограничение 20К соединений в конфигурации 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>
1 ответ
Скорее всего, процесс ледяного покрова имеет низкий предел, например, 1024.
Добавление такой строки в /etc/init.d/icecast2
Прямо перед запуском демона:
ulimit -n 25000
Обратите внимание, что в случае Icecast у вас больше всего не хватает пропускной способности. Это очень ресурсосберегающий в большинстве случаев использования.