WCS перестает работать

pride

Member
Добрый день. Продолжение этой темы.
Просто в какой то момент перестает отвечать, все потоки отваливаются одномоментно.
Это воспроизвелось 24.01 после перезагрузки. Была полная переустановка WCS и это повторилось сегодня.
Сервер по графикам в норм режиме, без какой либо нештатной нагрузки.
Из проблем, отвал всех потоков, перестает отвечать rest-api в логе куча непонятных ошибок.
Лог собрал и отправил. Если нужно могу предоставить доступы
 
Last edited:

Max

Administrator
Staff member
Здравствуйте.
Пришлите пожалуйста SSH доступы через эту форму.
Посмотрим все логи и дампы, которые могли привести к подобной проблеме.
Из проблем, отвал всех потоков
Если такое повторится, выполните
Code:
jstack `pidof java` > jstack.txt
И пришлите jstack.txt на изучение
 

pride

Member
Здравствуйте.
Пришлите пожалуйста SSH доступы через эту форму.
Посмотрим все логи и дампы, которые могли привести к подобной проблеме.

Если такое повторится, выполните
Code:
jstack `pidof java` > jstack.txt
И пришлите jstack.txt на изучение
Отправил
 

Max

Administrator
Staff member
Проверили ваш сервер.
1. Во время, когда вы столкнулись с проблемой (непосредственно перед перезапуском WCS) видим в логах проблемы с SDP, полученным от паблишера:
1707101041898.png

Это может означать потери на канале клиента, если это публикация WebRTC или захват RTSP потока с внешнего источника. В случае WebRTC поможет переключение на TCP транспорт
Code:
ice_tcp_transport=true
В случае RTSP источника проблема, скорее всего, на его стороне, т.к. RTSP сигналинг по умолчанию использует TCP.
2. Непонятные ошибки - это статистика, выводимая в лог по завершении медиасессии
1707101390958.png

Она должна выводиться в отдельный файл /usr/local/FlashphonerWebCallServer/logs/media-session-connection-stats-*.log, но, если вывод в этот файл не настроен в log4j.properties, эта статистика идет в серверный лог. Если она мешает в этом логе, добавьте в log4j.properties следующие строки
Code:
log4j.logger.MediaSessionConnectionStats=error, mediaSessionConnectionStatsAppender
log4j.additivity.MediaSessionConnectionStats=false
log4j.appender.mediaSessionConnectionStatsAppender=com.flashphoner.common.logging.NewLogForEachRunFileAppender
log4j.appender.mediaSessionConnectionStatsAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.mediaSessionConnectionStatsAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.mediaSessionConnectionStatsAppender.layout.ConversionPattern=%m%n
log4j.appender.mediaSessionConnectionStatsAppender.File=${com.flashphoner.fms.AppHome}/logs/stats/media-session-connection-stats.log
3. Также мы заметили, что полная переустановка, проведенная вами, согласно логам заключалась в откате 5.2.1611 до 5.1.3603 и установке 5.2.1888, все это без удаления предыдущей сборки
1707101850952.png

Такой способ не рекомендуется, т.к. разные минорные версии сервера используют немного разные настройки, которые могут конфликтовать

Рекомендации будут следующими:
1. Сделать чистую установку сервера:
- сохранить файлы
Code:
wss.jks
flashphoner.license
flashphoner.properties
log4j.properties
wcs-core.properties
database.yml
- полностью удалить WCS
Code:
sudo /usr/local/FlashphonerWebCallServer/bin/uninstall.sh
- установить последнюю сборку WCS 5.2.1906
- скопировать сохраненные файлы в /usr/local/FlashphonerWebCallServer/conf
2. Почистить настройки:
- убрать устаревшую настройку
Code:
disable_manager_rmi = false
- настройки, отвечающие за частоту PLI запросов, ограничить до 1 секунды или выше, 300 мс и 500 мс выглядит слишком часто и может забивать канал паблишера ключевыми кадрами, если браузер будет отвечать на каждый PLI запрос
Code:
rtcp_pli_request_interval=1000
periodic_fir_request_interval=1000
3. Обновить JDK до 14 или 15: JDK 14 и настроить ZGC: Настройка Z Garbage Collector (ZGC). Это снизит задержки в работе Java машины при сборке мусора и поднимет общую производительность.
4. Поднять уровень логов сервера до INFO
Code:
log4j.rootLogger=info, stdout, fAppender
5. Если проблема повторится, снимать репорт скриптом Сбор отладочных логов при помощи скрипта report.sh до перезапуска WCS, в этом случае в составе отчета соберется актуальный jstack, в котором будет видно, если какой-то из процессов встал в блокировку.

Часть этих рекомендаций мы уже описывали в предыдущей теме.
 
Last edited:

pride

Member
Сделал чистую установку проблема повторилась, логи сбросил через форму.

Из замеченного проц разогнался до 100% хотя все конекшены клиентов сбросил.
24 LA
 

Max

Administrator
Staff member
Здравствуйте.

В логах проблема:
Code:
server_logs/flashphoner.log
06:00:25,770
Caused by: java.lang.OutOfMemoryError: Java heap space
Это значит не хватает Java Heap - памяти.
В случае появления ошибки java.lang.OutOfMemoryError, сервер переходит в непредсказуемое поведение и должен быть перезагружен.
Поэтому нужно мониторить Heap, например с помощью Grafana + Prometheus или Zabbix и давать алерты и уведомления, если Heap не освобождается и превышен порог.

1. В конфиге wcs-core.properties выставлено -Xmx16g -Xms16g
Если конфигурация сервера позволяет, нужно выставить это значение в 50% от физической памяти сервера.
Например, если на сервере 64gb, то выставить -Xmx32g -Xms32g

2. В конфиге wcs-core.properties включен сборщик мусора CMS.
Требуется включить ZGC, как показано здесь.

После поднятия хип и переключения на ZGC, проблема должна уйти.
Если повторится с теми же симптомами (java.lang.OutOfMemoryError: Java heap space), то просьба снять репорт + дамп хип памяти
Code:
jmap -dump:file=/tmp/46726.hprof 46726
46726 - это PID процесса сервера
Снятие дампа памяти влияет на работу сервера в продакшене.
Поэтому эту процедуру можно запускать только когда уже все зависло и дальше только перезагрузка.
 

Max

Administrator
Staff member
Собрать дамп памяти можно тем же скриптом, что и логи
Code:
sudo /usr/local/FlashphonerWebCallServer/tools/report.sh --sysinfo --conf --dump --tar
 
Last edited:

Max

Administrator
Staff member
Добрый день.
По ошибкам вывода статистики в лог
2. Непонятные ошибки - это статистика, выводимая в лог по завершении медиасессии
Начиная со сборки 5.2.1975 вывод этой статистики по умолчанию отключен. Этих ошибок в логе больше не должно быть.
 

pride

Member
Благодарю, но проблема воспроизводится до сих пор. Повысили -Xmx50g -Xms50g теперь эта проблема воспроизводиться ровно в 1 месяц..
 

Max

Administrator
Staff member
Если это произойдет снова, сделайте пожалуйста репорт перед рестартом.
Это даст нам возможность найти причину.

Code:
sudo /usr/local/FlashphonerWebCallServer/tools/report.sh --sysinfo --conf --dump --tar
 

pride

Member
Если это произойдет снова, сделайте пожалуйста репорт перед рестартом.
Это даст нам возможность найти причину.

Code:
sudo /usr/local/FlashphonerWebCallServer/tools/report.sh --sysinfo --conf --dump --tar
Отправил
 

Max

Administrator
Staff member
Проверили присланный отчет.
1. В следующий раз просим присылать отчет от своей темы, по этой ссылке.
2. В отчете не содержится ошибки OutOfMemoryError, но выглядит так, что память заполнена
1719188160440.png

Однако Heap Dump не собран, как и jstack. Поэтому в отчете нет полезной информации, которая помогла бы выявить проблему
3. Косвенно, отчет показывает следующие проблемы:
- использование JDK 11
1719188396330.png

- использование сборщика мусора G1
- при публикации потоков клиентами SDP не доходит целиком до сервера
1719188662724.png

- сервер не обновлен до последней сборки, хотя это было рекомендовано в этом сообщении.
1719188764450.png


Просим выполнить следующие рекомендации:
1. Обновить сервер до последней сборки 5.2.2005.
2. Обновить JDK до 17 по этой инструкции: JDK 17
3. Включить сборщик мусора ZGC (без использования hugepages): Настройка Z Garbage Collector (ZGC)
4. Переключиться на TCP транпорт для клиентов с плохим каналом (на стороне клиента) или для всех клиентов (на стороне сервера): Публикация и воспроизведение потока по WebRTC через TCP
 
Last edited:
Top