Добрый день.
Судя по предоставленному логу, примерно в указанное время микшер был остановлен по REST API
/mixer/terminate
:
Code:
16:24:35,252 INFO RestApiRouter - HTTPS-pool-5-thread-1954 Use controller class com.flashphoner.rest.server.rest_v2.RestMixerStreamController with path /rest-api/mixer/terminate
Через 6 секунд после этого он был снова запущен запросом
/mixer/startup
Code:
16:24:41,408 INFO RestApiRouter - HTTPS-pool-5-thread-1958 Use controller class com.flashphoner.rest.server.rest_v2.RestMixerStreamController with path /rest-api/mixer/startup
16:24:41,408 INFO PullAgent - HTTPS-pool-5-thread-1958 Created agent:WebRTCAgentFilter{localMediaSessionId='null', remoteMediaSessionId='null', localStreamName='5165SEHHE1qURqzqdc8', remoteStreamName='null', uri='mixer://mixer5165', status='null', record='false', hasAudio='true', hasVideo='true', profiles='null'}
И так несколько раз подряд, иногда с промежутками между запуском и остановкой в 100 и менее миллисекунд.
То есть проблемы не с одним конкретным потоком, а с логикой управления микшером в целом.
Также мы отметили, что бэкенд не проверяет, существует ли микшер, когда пытается добавить в него потоки по
/mixer/add
. Например, здесь бэкенд пытался добавить двух участников:
Code:
16:33:13,490 INFO RestApiRouter - HTTPS-pool-5-thread-1964 Use controller class com.flashphoner.rest.server.rest_v2.RestMixerStreamController with path /rest-api/mixer/add
16:33:13,490 ERROR ixerStreamController - HTTPS-pool-5-thread-1964 pull exception Mixer not found
16:33:13,565 INFO RestApiRouter - HTTPS-pool-5-thread-1964 Use controller class com.flashphoner.rest.server.rest_v2.RestMixerStreamController with path /rest-api/mixer/add
16:33:13,565 ERROR ixerStreamController - HTTPS-pool-5-thread-1964 pull exception Mixer not found
При большом количестве участников это приведет к частому повторению холостых запросов.
Кроме того, как мы уже отмечали в
этом посте, бэкенд часто дает запрос
/mixer/startup
через 100 и менее миллисекунд после
/mixer/terminate
, и не все ресурсы успевают освободиться за такое короткое время, что приводит к ошибкам создания микшера. Причем, получив ошибку, бэкенд ее игнорирует и пытается добавить в микшер поток, даже если микшер не создан.
В связи с этим, рекомендуем пересмотреть логику бэкенда, как писали в
этом посте в п. 2.