Freezing SFU room

Shiga

New Member
Добрый день.

Мы пробуем sfu и у нас периодический зависает комната. Вебсокет падает и через rest-api/sfu/stats показывает юзеров которых не существует, новые юзеры также остаются в комнате после выхода.

wcs - v.2.0.223-5.2.1383
 

Attachments

Max

Administrator
Staff member
Добрый день.
Пожалуйста, обновите WCS до последней сборки 5.2.1431 и SFU SDK до 2.0.126. Проверьте, воспроизводится ли проблема. Если да, то соберите отчет: Сбор отладочных логов при помощи скрипта report.sh и пришлите, используя эту форму. Также уточните:
1. Какое количество одновременно подключенных пользователей в комнате?
2. В каких качествах публикуете потоки, какой кодек используете? Отметим, что по умолчанию используется VP8 для видео, что дает дополнительную нагрузку на клиента, т.к. аппаратное ускорение данного кодека не поддерживается браузерами.
 

ArnoldE

New Member
У нас также воспроизвелась аналогичная проблема.
Нагрузки нет, сервер для разработки используем (2-3 одновременных подключения)
Используем H264
Версия WCS и SFU SDK последнии.

Сделали:
service webcallserver restart
Сервер рестартанул спустя 1 минуту (Обычно данная команда отрабатывается за 1-2 сек)

После рестарта все хорошо.
 

Max

Administrator
Staff member
Сделали:
service webcallserver restart
Сервер рестартанул спустя 1 минуту (Обычно данная команда отрабатывается за 1-2 сек)

После рестарта все хорошо.
Как именно оценивалось время перезапуска, по каким критериям: ответ по Websocket, загрузка демо-страницы, загрузка страницы статистики http://localhost:8081/?action=stat?
Если долгий старт воспроизводится время от времени при перезапуске сервера, соберите отчет сразу после одного из таких перезапусков: Сбор отладочных логов при помощи скрипта report.sh и отправьте, используя эту форму.
 

ArnoldE

New Member
Время перезапуска оценивалось визуально в консоли по времени отработки команды: service webcallserver restart

Но это следствие, а вопрос точно такой же как и в первом сообщении в этом посте у Shiga.
SFU. В какой-то момент, когда пользователи покидают комнату, на сервере они не удаляются.

При этом в логе такая ошибка:

Code:
a=max-message-size:262144
', nickname='studio2', waitingRoom='false'}
20:13:21,340 INFO              Hstudio2 - WSS-pool-29-thread-596 Created transport, port 31692
20:13:21,340 INFO              Dstudio2 - WSS-pool-29-thread-596 Created SFU session 187cabc8-39fa-445a-a69b-64fa41dd3231
20:13:21,340 ERROR    SFUHandlerstudio2 - WSS-pool-29-thread-596 Failed to process client's offer
com.flashphoner.sfu.room.exception.NicknameUnavailableException: Nickname unavailable
        at com.flashphoner.sfu.room.E.A(Unknown Source)
        at com.flashphoner.sfu.C.A(Unknown Source)
        at com.flashphoner.sfu.handler.SFUHandler.joinRoom(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor422.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.flashphoner.server.client.handler.HandlerUtils.processRequest(Unknown Source)
        at com.flashphoner.server.ws.B.A(Unknown Source)
        at com.flashphoner.server.ws.B.D(Unknown Source)
        at com.flashphoner.server.ws.B.B(Unknown Source)
        at com.flashphoner.server.ws.B.messageReceived(Unknown Source)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(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.SimpleChannelUpstreamHandler.handleUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(Unknown Source)
        at org.jboss.netty.handler.timeout.ReadTimeoutHandler.messageReceived(Unknown Source)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(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.frame.FrameDecoder.callDecode(Unknown Source)
        at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(Unknown Source)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(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 org.jboss.netty.util.ThreadRenamingRunnable.run(Unknown Source)
        at org.jboss.netty.util.internal.DeadLockProofWorker$1.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)
20:13:32,806 INFO     SFUHandlerstudio3 - WSS-pool-29-thread-596 createMediaSession RoomConfig{internalMessageId='487786ef-306e-4443-a266-08c04756f81a', id='ROOM1', name='null', pin='1234', sdp='v=0
o=- 1629347433540628895 2 IN IP4 127.0.0.1
 
Last edited:

Max

Administrator
Staff member
SFU. В какой-то момент, когда пользователи покидают комнату, на сервере они не удаляются.
Обновите WCS и SFU SDK до последних сборок (5.2.1471 и 2.0.131 соответственно). Если проблема воспроизведется на этих сборках, соберите полный отчет: Сбор отладочных логов при помощи скрипта report.sh и отправьте, используя эту форму.
 

Max

Administrator
Staff member
Проверили отчет.
По логам видно, что в тех случаях, когда при попытке повторного входа в комнату участник получает исключение NicknameUnavailabe, перед попыткой входа нет сообщений о выходе участника из комнаты. Также видно, что пользователь с таким именем играет поток от другого участника:
Code:
16:42:58,002 INFO      SFUHandlerstudio - WSS-pool-29-thread-594 createMediaSession RoomConfig{internalMessageId='b644bce5-ca88-4c07-81f5-a5471321d153', id='df3', name='null', pin='1234', sdp='v=0
...
16:42:58,003 INFO               Hstudio - WSS-pool-29-thread-594 Created transport, port 31536
16:42:58,004 INFO               Dstudio - WSS-pool-29-thread-594 Created SFU session ad6e86ef-a4b2-449f-9648-f1852c1013b5
16:42:58,004 ERROR     SFUHandlerstudio - WSS-pool-29-thread-594 Failed to process client's offer
com.flashphoner.sfu.room.exception.NicknameUnavailableException: Nickname unavailable
...
16:42:58,013 INFO                Cguest - STUN-UDP-pool-39-thread-74 690eb48c-7ad5-484f-b054-7a339ce7d6584 Received feedback PictureLossIndicationMessage{}
16:42:58,013 INFO                     D - STUN-UDP-pool-39-thread-74 Received pli 7e43d789-5402-41eb-b782-16925c9fa201 690eb48c-7ad5-484f-b054-7a339ce7d658  ==> 09251fa4-7095-4633-8679-26ac05978a90 690eb48c-7ad5-484f-b054-7a339ce7d658
16:42:58,013 INFO               Cstudio - STUN-UDP-pool-39-thread-74 Send pli to 690eb48c-7ad5-484f-b054-7a339ce7d658
16:42:58,208 INFO                     D - STUN-UDP-pool-39-thread-74 Received IFrame from 8d358dfa-5025-4a31-a6cd-30bc7bc660df-null
...
Выглядит так, что участник из комнаты не выходил (возможно, в другой вкладке или с другого ПК, т.к. при закрытии вкладки все медиасессии, связанные с участником, рвутся).
Просим детально описать методику тестирования, что именно делали по шагам, например:
- пользователь A создает комнату и публикует первый поток
- пользователь B входит в комнату и играет поток пользователя A
- пользователь C входит в комнату и играет поток пользователя A
- пользователь A выходит из комнаты
и т.д.
 
Top