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

Discussion in 'Web Call Server 5' started by Warfunck, Jan 8, 2020.

  1. Warfunck

    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)
  2. Max

    Max Administrator Staff Member

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

    Warfunck New Member

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

    Max Administrator Staff Member

    Пожалуйста, воспроизведите проблему и соберите логи по этой инструкции при помощи скрипта и пришлите архив на support@flashphoner.com.
    До того, как Вы это сделаете, пришлите также серверный лог, в котором зафиксирована ошибка.
  5. Warfunck

    Warfunck New Member

    Серверный лог отправил на почту
  6. Max

    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 на стороне камеры.
  7. Warfunck

    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: Jan 9, 2020
  8. Warfunck

    Warfunck New Member

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

    Max Administrator Staff Member

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

    Warfunck New Member

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

    Max Administrator Staff Member

    Публикация начнется - или возобновится - только после захвата RTSP (или RTMP) потока: с использованием REST API запроса, или по запросу от подписчика. То есть если подписчик использует веб-плеер, то нужно заново запросить воспроизведение потока (или должно запрашиваться автоматически при обновлении страницы).
  12. Max

    Max Administrator Staff Member

    Проверьте, пожалуйста, после восстановления соединения с камерой захват потока без перезапуска WCS
    - с использованием REST API (RTSP, RTMP)
    - с запуском воспроизведения из примера плеера (https://WCS:8444/client2/examples/demo/streaming/player/player.html)
  13. Warfunck

    Warfunck New Member

    хорошо, спасибо

Share This Page