ERROR HLSServerHandler - HLS-HTTP-pool-27-thread-4 HTTP error

Warfunck

New Member
Добрый день, отвалились стримы с такой ошибкой. Подскажите пожалуйста, что могло вызвать проблему?

15:25:11,425 ERROR HLSServerHandler - HLS-HTTP-pool-27-thread-4 HTTP error
java.lang.ArrayIndexOutOfBoundsException: -2
at com.flashphoner.server.H.F.messageReceived(Unknown Source)
at org.jboss.netty.handler.codec.http.HttpContentEncoder.messageReceived(Unknown Source)
at org.jboss.netty.handler.codec.http.HttpChunkAggregator.messageReceived(Unknown Source)
at org.jboss.netty.channel.Channels.fireMessageReceived(Unknown Source)
at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(Unknown Source)
at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(Unknown Source)
at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(Unknown Source)
at org.jboss.netty.channel.Channels.fireMessageReceived(Unknown Source)
at org.jboss.netty.channel.Channels.fireMessageReceived(Unknown Source)
at org.jboss.netty.channel.socket.nio.NioWorker.read(Unknown Source)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(Unknown Source)
at org.jboss.netty.channel.socket.nio.DeadlockAwareNioWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
 

Max

Administrator
Staff member
Добрый день.
Пожалуйста, опишите подробнее, что именно произошло: остановилась публикация потока, остановилось воспроизведение по HLS, не начинается воспроизведение по HLS, что-то еще?
Также воспроизведите проблему и соберите логи по этой инструкции при помощи скрипта и пришлите архив на support@flashphoner.com. Дампы пока собирать не нужно.
 

Warfunck

New Member
Источник стрима - rtsp камера за vpn'ом, публикуется на сайте по webrts. Публикация остановилась, в логе ошибка, приведенная выше
 

Max

Administrator
Staff member
Мы получили и проверили серверный лог.
Сообщение, вынесенное в заголовок поста, говорит о том, что на HLS-порт (8082/HTTP или 8445/HTTPS) прилетел пакет, который не являлся HTTP/HTTPS пакетом. Такое бывает, например, при сканировании портов, но в Ваших логах это отмечено однократно. При этом публикация потоков с камер по логу прекратилась спустя какое-то время (сообщение зафиксировано 15:25:11, а очередное восстановление соединения с камерами в 16:00:17), либо часть лога отсутствует.
Периодически подписчики разрывают соединение с сервером, об этом говорят сообщения в логе "Stopped by session disconnect". Соединение с камерами также периодически разрывается не по отсутствию подписчиков (если поток никто не смотрит в течение минуты, захват потока с камеры останавливается), а со стороны камер, при восстановлении соединения с камерами в логе видны сообщения "java.net.ConnectException: connection timed out".
Таким образом, необходимо проверить качество каналов между камерами и сервером, а также между подписчиками и сервером. Качество каналов до подписчиков вы можете проверить по описанной здесь методике, до камер только при помощи iperf, если есть возможность запустить iperf на стороне камеры.
 

Warfunck

New Member
Подскажите, а если ли какие-то опции авторебута потоков в wcs? так как стрим всегда восстанавливается после ребута. И поясните пожалуйста, почему возникает след. warn:
15:17:48,627 WARN annelUpstreamHandler - STUN-UDP-pool-50-thread-2 EXCEPTION, please implement com.flashphoner.ice.B.A.exceptionCaught() for proper handling.
java.lang.ArrayIndexOutOfBoundsException: 1000
at com.flashphoner.A.E.B.B.A.B(Unknown Source)
at com.flashphoner.A.E.B.B.A.A(Unknown Source)
at com.flashphoner.A.E.B.A.C.A(Unknown Source)
at com.flashphoner.media.I.C.A(Unknown Source)
at com.flashphoner.media.I.C.A(Unknown Source)
at com.flashphoner.media.I.D.A(Unknown Source)
at com.flashphoner.A.E.L.D(Unknown Source)
at com.flashphoner.A.E.L.A(Unknown Source)
at com.flashphoner.A.E.H.A(Unknown Source)
at com.flashphoner.ice.B.A.messageReceived(Unknown Source)
at org.jboss.netty.channel.Channels.fireMessageReceived(Unknown Source)
at com.flashphoner.ice.A.G.handleUpstream(Unknown Source)
at org.jboss.netty.channel.Channels.fireMessageReceived(Unknown Source)
at org.jboss.netty.channel.socket.nio.NioDatagramWorker.read(Unknown Source)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(Unknown Source)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(Unknown Source)
at org.jboss.netty.channel.socket.nio.NioDatagramWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
 
Last edited:

Warfunck

New Member
Отправил вам репорт. У нас в качестве источника 6 rtsp и 2 rtmp устройств. RTMP стримы онлайн только пару часов в день, поэтому в логе видны сообщения, указывающие на то, что они недоступны. rtsp стримы онлайн всё время, но иногда публикация прирывается на всех клиентах. Помогает ребут wcs
 

Max

Administrator
Staff member
Подскажите, а если ли какие-то опции авторебута потоков в wcs? так как стрим всегда восстанавливается после ребута
При перезапуске сервера подписчики восстанавливают соединение с сервером и заставляют его заново запрашивать потоки с камер. Насколько мы видим в предоставленных логах, публикация прерывается либо по инициативе клиентов (и, фактически, это не остановка публикации RTSP стрима, а остановка воспроизведения), либо со стороны камер.
Захватом потоков Вы может управлять по REST API для RTSP и RTMP источников, а при помощи REST hook /StreamStatusEvent контролировать остановку захвата.
В любом случае, необходимо исключить проблемы с каналами. Частично в этом может помочь переход на TCP при воспроизведении потоков с сервера по WebRTC, тогда соединение с клиентами будет стабильнее, но проблему с камерами это не решит, RTSP по умолчанию и так уже использует TCP.
RTMP стримы онлайн только пару часов в день, поэтому в логе видны сообщения, указывающие на то, что они недоступны
Сообщения "connection timed out" встречаются в предоставленных логах и в отношении RTSP камер.
 

Warfunck

New Member
Когда пропадает линк между камерой с wcs, а затем восстанавливается, разве публикация не должна возобновляться автоматически (либо после обновления страницы браузера)? Дело в том, что возникает ситуация (возможно вызванная плохим соединением между сервером и камерами), когда соединение между wcs и камером есть, но публикации стрима на странице нету. Обновление страницы в этом случае не помогает, лечится ребутом сервера и обновлением страницы.
 

Max

Administrator
Staff member
Когда пропадает линк между камерой с wcs, а затем восстанавливается, разве публикация не должна возобновляться автоматически
Публикация начнется - или возобновится - только после захвата RTSP (или RTMP) потока: с использованием REST API запроса, или по запросу от подписчика. То есть если подписчик использует веб-плеер, то нужно заново запросить воспроизведение потока (или должно запрашиваться автоматически при обновлении страницы).
 
Top