Оформление
Сбой соединения WebSocket
1. Сбои в соединении WebSocket
1) Администратор входит в систему FineBI , нажимает "Management System > Intelligent Operation and Maintenance > Load Management", и графики "Load", "Memory Utilisation" и "CPU Utilisation" на вкладке "Load Monitoring" оказываются пустыми.
Верхнее всплывающее сообщение: Сокет не подключен, отображение памяти в реальном времени и другие исключения, соответствующий порт может быть не открыт
(2) Когда администратор входит в систему FineBI и нажимает "System Management > Интеллектуальная эксплуатация и обслуживание > Журналы платформы", "Количество людей в сети в текущей системе" на вкладке "Статистика доступа" отображается некорректно. Невозможно записать статистику процесса выполнения шаблона, такую как потребление памяти и времени.
Верхнее всплывающее сообщение: Socket not connected, system access user statistics and other abnormalities, please open relevant port, the relevant port may be not open!
(3) Пользователи нажимают "System Management > Соединение данных", чтобы войти в интерфейс редактирования соединения данных, может быть несколько человек, редактирующих одно и то же соединение данных в одно и то же время.
Вверху появляется сообщение: Socket не подключен, возможны конфликты, вызванные одновременной работой нескольких редакторов, и соответствующий порт может быть не открыт.
(4) Выбивание логина при сбое, не может быть выбито в реальном времени, в кадре отображается страница входа, то есть, не выскакивая из кадра, можно напрямую перейти к интерфейсу входа. Как показано на рисунке ниже:
Примечание: Сценарии, в которых возникает эта проблема: отключение единого входа, отключение пользователей, изменение паролей пользователей, изменение методов аутентификации, переключение импорта синхронизации, использование пользователей платформы для отключения пользователей/открытия переключателей ограничений, изменение Lic и т. д.

(5) Пользователи не могут получить всплывающее окно сообщения в правом нижнем углу, и нет подсказки сообщения на маленьком колокольчике, но они могут нажать на маленький колокольчик, чтобы войти в панель сообщений для проверки.
6) Тайм-аут при входе в систему, невозможно получить правильный срок действия токена
Пользователь вошел в систему FineBI , не поставив галочку в поле 'Keep logged in'. Таймаут входа установлен на 1 час, если пользователь вошел в систему в 3:00, то операция была выполнена на платформе в 3:20.
- WebSocket-соединение успешно установлено, вылетит на 4:20 (без каких-либо действий со стороны платформы).
- Если WebSocket не подключен, токен не может быть получен повторно, и он вылетает в 4 точках.
Когда пользователь входит в систему FineBI и ставит галочку "Keep logged in", по умолчанию он будет выбит из системы через 14 дней без каких-либо действий. Если он работает на платформе в течение 14 дней, он не может получить токен снова, и он все равно будет выбит из системы через 14 дней.
Примечание 1: Для JAR 2020-08-31 и более поздних версий это не происходит, если Websocket не подключен.
Примечание 2: Для JAR до 2020-08-31, если дополнительные порты не могут быть открыты или сокеты не разрешены, вы можете установить " Refresh Login Status Plugin ", чтобы решить эту проблему.
После того как администратор войдет в платформу, вверху появится сообщение: Socket is not connected, you will not be able to stay logged in during use, the relevant port may not be open.
При каждом обновлении страницы платформы также будет появляться подсказка, обновление означает обновление браузера, например, нажатием F5.
Примечание: В JAR от 2020-08-31 и более поздних версий нет этой подсказки, если Websocket не подключен.
7) При установке или удалении плагинов в Plugin Store нет индикации успеха или неудачи.
2. Убедитесь, что соединение с веб-сокетом не удалось.
Существует три способа, с помощью которых пользователь может подтвердить, что соединение websocket не удалось.
1) Администратор входит в систему FineBI, проверяет три изображения в разделе "System Management > Интеллектуальная эксплуатация и обслуживание > Управление нагрузкой > Нагрузка в реальном времени", если они не отображаются, это означает, что WebSocket не подключен.

2) F12 откройте консоль, введите "Dec.socket.connected", если это "false", значит, соединение не установлено.

3) F12, чтобы открыть консоль, если появится ошибка о 48889 (номер порта прокси-сервера по умолчанию) или других портах сокетов, значит, соединение не удалось.

3. нарушение подключения к проекту прямого доступа
Применимые сценарии: доступ к проекту не через балансировку нагрузки, прямой доступ к проекту, сбой соединения websocket
Пользователям предлагается поочередно устранять неполадки и оптимизировать работу в соответствии со следующим.
3.1 Убедитесь, что порт занят
Просмотрите следующие поля в таблице fine_conf_entity, чтобы увидеть порты WebSocket/порты переадресации с помощью "Fill in changes to fine_conf_entity ".
| порты | JAR-пакет | имя параметра | Параметры по умолчанию |
|---|---|---|---|
| Порт Websocket | - | WebSocketConfig.port | ["48888", "49888"] |
| Порт переадресации Websocket | До 2019-11-08 | WebSocketConfig.requestPort | 48889 |
| 2019-11-08 и далее | WebSocketConfig.requestPorts | 48889 |
Убедитесь, что порт/порт переадресации не занят другим процессом, если он занят и процесс важен, переключитесь на другой доступный порт.
Супер-администратор может изменить порт/порт переадресации WebSocket, заполнив форму. Настройки вступают в силу после перезапуска сервера.
Примечание 1: Чтобы изменить значения поля таблицы fine_conf_entity, обратитесь к разде лу Заполнение модификаций fine_conf_entity.
Примечание 2:Супер администраторы могутпросматривать и изменять порты WebSocket через"fine_conf_entity Visual Configuration Plugin", но он не поддерживает просмотр и изменение портов переадресации WebSocketчерез этот плагин .
3.2 Убедитесь, что конфигурация порта не вступила в силу
При настройке порта/перенаправления WebSocket есть некоторые нюансы, поэтому убедитесь, что вы правильно задали номер порта:
(1) Номер порта может быть установлен в диапазоне 1024~65535, если он имеет более одного значения, формат установки следующий: [номер порта 1, номер порта 2, номер порта 3].
2) Рекомендуется, чтобы значение параметра "WebSocket Forwarding Port" было больше, чем количество узлов кластера, чтобы гарантировать, что каждый узел будет выбирать доступный порт, и сервер не сможет запуститься из-за занятости порта.
3) Рекомендуется установить несколько значений для "Порта WebSocket" в качестве резервной копии, чтобы предотвратить развертывание на сервере нескольких проектов и занятие порта.
4) Не устанавливайте номер порта на порт удаленного подключения к серверу 3389.
5) Если проект и балансировка нагрузки nginx находятся в одной среде, не дублируйте номер порта, который является одновременно портом WebSocket и портом переадресации WebSocket.
6) Если после полей WebSocketConfig.port, WebSocketConfig.requestPort, WebSocketConfig.requestPorts стоит пробел, конфигурация не вступит в силу.
7) Если WebSocketConfig.port, WebSocketConfig.requestPort, WebSocketConfig.requestPorts имеют неправильные размеры, конфигурация не вступит в силу.
8) WebSocketConfig.requestPort и WebSocketConfig.requestPorts не могут существовать в таблице fine_conf_entity одновременно, иначе это будет ошибкой.
3.3 Убедитесь, что порт открыт для посещения
Ступени истощения:
Если вы уверены, что порт/перенаправляющий порт WebSocket не занят другим процессом, убедитесь, что установленный порт открыт для публики.
- linux: nc -vz -w 2 [ip] [port]
- windows: telnet сервер ip websocket порт
Решение:
1) Откройте ограничения портов брандмауэра сервера.
2) Включите ограничение портов группы безопасности для серверов Aliyun/Huawei Cloud/Microsoft Cloud.
3) Отключите проверку работоспособности AliCloud.
3.4 Подтверждение среды HTTPS
Конфигурация сертификата в среде https должна быть настроена в режиме websocket, обратитесь к документу: Конфигурация среды HTTPS WebSocket
1) Ключевой путь:
- Tomcat конфигурация сервера.xml абсолютный путь / относительный путь может быть.
- "Путь SSL-ключа" в разделе "Управление системой > Общие > Настройки https" в системе FineBI поддерживает только абсолютный путь.
2) Дизайнер не поддерживает настройку HTTPS, а установленный EXE BI не поддерживает настройку HTTPS.
3) Если Nginx настроен на https, то не настраивайте его в настройках "Системное администрирование > Общие > https".
4) Проект настроен на https, доступ к проекту возможен как по http, так и по https. Но websocket не может поддерживаться одновременно, https-соединение работает нормально, http-соединение не работает.
3.5 Конфликты пакетов JAR
Описание проблемы:
При возникновении конфликта между JAR-пакетами в проекте появляется мастер развертывания сервера, который выдает сообщение "WebSocket Port Exception", как показано на следующем рисунке:

Решение:
Удалите конфликтующий JAR-пакет, завершите процесс проекта, подождите 2 минуты, пока порт не будет освобожден, и перезапустите проект.
Если Apache Impala загружается с официального сайта, не помещайте slf4j-log4j12-1.5.11. jar и slf4j-api-1.5.11. jar под %FineReport%\webapps\lib. webroot\WEB-INF\lib, иначе это вызовет исключение порта Websoket.
3.6 Убедитесь, что запросы сервера не слишком медленные
Время соединения WebSocket в коде установлено на 20 секунд, если время запроса превысит это значение, соединение WebSocket будет считаться неудачным.
3.7 Просмотр ошибок консоли
F12 Откройте консоль, WebSocket Распространенные ошибки и их возможные причины приведены ниже:
- net::ERR_SSL_PROTOCOL_ERROR: Проект настроен на https, а websocket - нет.
- net::ERR_EMPTY_RESPONCE: Сервер настроен на https, но доступ к нему осуществляется по http.
- net::ERR_CONNECTION_REFUSED: порт не открыт или порт не прослушивается.
- net::ERR_CONECTION_TIMEOUT: Проблема с сетью, медленное разрешение доменных имен.
3.8 Кэш браузера
Описание проблемы: Разные браузеры на одном компьютере обращаются к проекту, некоторые соединения websocket успешны, некоторые - нет.
Решение: Просто очистите кэш браузера.
4. Невозможность доступа к инженерным соединениям через балансировку нагрузки
Применимые сценарии: доступ к проекту через балансировку нагрузки, отказ соединения с веб-сокетом
Пользователям предлагается поочередно устранять неполадки и оптимизировать работу в соответствии со следующим.
4.1 Убедитесь, что доступ к веб-сокету на сервере подключен правильно
Зайдите в проект на сервере с localhost и убедитесь, что websocket подключен правильно.
1) Если веб-сокет подключен, перейдите к разделу 4.2 Устранение неполадок.
2) Если соединение через websocket не работает, проверьте , не занят ли порт websocket другими процессами.
Супер администратор может просматривать порты WebSocket/порты переадресации через "fine_conf_entity Visual Configuration Plugin ".
| порты | JAR-пакет | имя параметра | Параметры по умолчанию |
|---|---|---|---|
| Порт Websocket | - | WebSocketConfig.port | ["48888", "49888"] |
| Порт переадресации Websocket | До 2019-11-08 | WebSocketConfig.requestPort | 48889 |
| 2019-11-08 и далее | WebSocketConfig.requestPorts | 48889 |
Убедитесь, что порт/порт переадресации не занят другим процессом, если он занят и процесс важен, переключитесь на другой доступный порт.
Супер администратор может изменить порт WebSocket через "fine_conf_entity Visual Configuration Plugin". Настройки вступают в силу после перезапуска сервера.
Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".
4.2 Убедитесь, что прямой доступ к проекту подключен без прохождения через сервер нагрузки
Без балансировки нагрузки на сервер сторонний компьютер напрямую обращается к проекту, чтобы убедиться в правильности подключения к веб-сокету.
(1) Если прямой доступ к соединению websocket проекта не удался, воспользуйтесь содержанием главы 3 данного документа для устранения неполадок.
(2) Если прямой доступ к проекту websocket соединение нормально, через сервер нагрузки для доступа к проекту, websocket соединение сбой, это может быть подтверждено, что проблемы конфигурации сервера нагрузки, необходимо устранить неполадки в конфигурации нагрузки.
4.3 Убедитесь, что порты прослушивания на сервере балансировки нагрузки работают нормально.
1) Убедитесь, что два порта на сервере с балансировкой нагрузки, используемые для прослушивания порта контейнера и порта веб-сокетов, работают нормально и не заняты другими процессами.
2) Убедитесь, что соответствующие порты на пути открыты, перейдя по пути Компьютер > Сервер балансировки нагрузки > Инженерный вебсокет.
4.4 Убедитесь, что перенаправление сервера нагрузки настроено правильно
Пример BI-проекта с использованием nginx для прямого сопоставления.
Порт по умолчанию tomcat 8080, порт по умолчанию websocket 48888, 49888, порт по умолчанию websocket forwarding 48889
При перенаправлении с помощью nginx любой свободный порт на сервере nginx может быть использован для перенаправления порта 8080 tomcat, а порт 48889 на сервере nginx может быть использован для перенаправления порта 48888 проекта.
Справочный документ: Руководство по конфигурации Nginx.conf

Примечание 1: nginx использует 48889 для пересылки 48888 проекта, вам нужно убедиться, что 48889 с компьютера доступа на nginx проходит, а 48888 с сервера nginx на сервер проекта проходит.
Аппаратные нагрузки, такие как F5, используются по тому же принципу, что и nginx, с пробросом портов контейнеров и портов websocket.
Примечание 2: Когда nginx перенаправляет порты websocket, вам нужно настроить ip_hash, как показано ниже:

4.5 Ограничения конфигурации, связанные с балансировкой нагрузки
Все конфигурации балансировки нагрузки должны быть осторожными: не включайте обнаружение состояния, нет ли политики группы безопасности, из-за которой порты остаются открытыми, и необходимо включить удержание сеанса.
1) Откройте ограничения портов брандмауэра сервера.
2) Включите ограничение портов группы безопасности для серверов Aliyun/Huawei Cloud/Microsoft Cloud.
3) Отключите проверку работоспособности AliCloud.
4) Для загрузки оборудования F5 необходимо включить функцию удержания сеанса.
5. условия
1) При перезапуске проекта необходимо убить процессы, запущенные под проектом, и подождать 2 минуты, пока порт не освободится, иначе перезапуск может не состояться.
(2) После вышеуказанных действий по устранению неисправностей и модификации веб-сокет может быть подключен нормально, но после этого можно получить только отображение памяти и процессора, журналы платформы и другие данные. Исторические данные восстановить невозможно.