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:
Top