Начните с определения причины задержки.
Если открытие или подключение к комнате Matrix занимает много времени, сначала определите, затрагивает ли задержка один удаленный домашний сервер, одну комнату или весь ваш экземпляр Synapse. Это различие важно: федерация — это двусторонний обмен данными между домашними серверами, а подключение к комнате может включать несколько серверов. Медленное подключение может быть вызвано процессом Synapse, удаленным сервером, маршрутизацией DNS или TLS, базой данных или размером и состоянием комнаты. Единого переключателя «задержки федерации», который бы устранил все эти проблемы, не существует.
Подтверждено: Synapse записывает информацию о повторных попытках подключения к удаленному целевому серверу, предоставляет метрики Prometheus и включает ограничения скорости для подключения к комнатам. Зависит от ситуации: что именно из этого является причиной медленного подключения в конкретном случае. Невозможно определить только по симптому: медленно ли работает другой домашний сервер или промежуточная сеть. Начните с одного пользователя, одной комнаты и приблизительного времени медленной попытки подключения; сравните эти данные с контрольной комнатой, которая подключается нормально.
Проверьте, доступна ли федерация.
Используйте официальный тестер федерации Matrix, указав имя сервера Matrix на вашем домашнем сервере. Он может выявить распространенные проблемы с DNS, делегированием, сертификатами и доступностью. Имя сервера в идентификаторах пользователей может отличаться от имени машины или прокси-сервера, обслуживающего Synapse, поэтому проверьте настроенную конечную точку федерации и делегирование, а не предполагайте, что домен идентификатора пользователя должен напрямую размещать Synapse.
В документации Synapse по федерации указан порт федерации по умолчанию — TCP 8448, в то время как в случае делегированных или обратных прокси-серверов можно использовать HTTPS на порту 443. Соответствующий порт должен быть доступен с других домашних серверов, и исходящие брандмауэры также могут разрешить трафик федерации. Проверьте соответствующие правила входящего и исходящего трафика брандмауэра, а затем повторите тестирование с помощью тестера федерации. Не открывайте оба порта без разбора, если ваша система настроена на использование только одного.
Результат, указывающий на ошибку сертификата, DNS или маршрутизации, говорит о проблемах с конфигурацией или доступностью сети, а не о пропускной способности сервера. Проверьте записи DNS и делегирование для имени сервера Matrix, цепочку TLS-сертификатов обратного прокси-сервера и то, перенаправляет ли прокси-сервер пути федерации в Synapse. В документации Synapse указано, что в некоторых конфигурациях серверы федерации не выполняют постоянное перенаправление 308, поэтому проверьте также и неожиданные перенаправления. Исправьте конкретную ошибку проверки и повторите тестирование, прежде чем изменять количество рабочих процессов или ограничения скорости.
Справочная информация: Настройка и устранение неполадок федерации Synapse и руководство по межсетевому экрану Synapse .
Проверьте, находится ли один из удалённых серверов в режиме ожидания повторных попыток.
Synapse временно отключает удалённый сервер после неудачных запросов на федерацию. Задержки повторных попыток используют механизм резервирования, поэтому повторные сбои могут привести к задержке сообщений или подключений к этому серверу. Это не означает, что весь ваш домашний сервер работает медленно: возможно, недоступен один удалённый сервер или запросы к нему завершаются с ошибкой.
Администраторы могут изучить API администрирования федерации Synapse, в котором содержится соответствующая документация GET /_synapse/admin/v1/federation/destinations. Используйте токен доступа администратора сервера и храните его в закрытом доступе. Просмотрите записи о назначении и поля повторных попыток для домашнего сервера, участвующего в проблемной комнате. Эти записи помогают определить, когда происходит повторная попытка подключения к назначению, но сами по себе не доказывают причину сбоя соединения. Сопоставьте их с журналами Synapse, журналами прокси-сервера, результатами тестов DNS/TLS и временем, когда пользователи сообщали о проблемах.
API администрирования федерации документирован как экспериментальный и может быть изменен. Избегайте написания скриптов для работы с ним, как если бы это был стабильный общедоступный клиентский API. Synapse также описывает операцию сброса таймаута соединения, которая может инициировать еще одну фоновую попытку подключения к целевому серверу, уже находящемуся в режиме ожидания. Рассматривайте это как диагностическое или восстановительное действие только после устранения или понимания основной причины сбоя; многократное снятие таймаутов не заставит неработоспособный удаленный сервер ответить. Успешный HTTP-ответ от конечной точки сброса не означает, что фоновая попытка федерации уже завершена.
Справочная информация: API администрирования федерации Synapse . Экспериментальный статус API и доступные поля могут меняться в зависимости от версии Synapse, поэтому перед использованием проверьте документацию для используемой вами версии.
Перед масштабированием оцените производительность Synapse и его базы данных.
Включайте конечную точку метрик Prometheus в Synapse только во внутренней сети, находящейся под контролем доступа, или за средствами контроля доступа. В официальном руководстве по мониторингу описано /_synapse/metricsи показано, как сделать ее доступной через слушатель метрик или существующий HTTP-слушатель. Метрики могут включать в себя оперативные сведения; не публикуйте эту конечную точку в открытом доступе. Если вы уже собираете метрики, сравните время медленного соединения с загрузкой ЦП, использованием памяти, задержкой запроса, продолжительностью транзакций базы данных, а также входящей и исходящей активностью федерации.
Используйте графики, чтобы отличить общую перегрузку от задержек, специфичных для федерации. Если обычные запросы клиентов и транзакции базы данных замедляются одновременно с операциями объединения, проверьте нагрузку на ЦП и память хоста, состояние PostgreSQL, ограничения на количество подключений, задержку диска и длительные запросы. Если локальная активность в комнате остается стабильной, но на одном удаленном сервере наблюдаются сбои или задержки повторных попыток, отдайте приоритет доступности федерации и этому удаленному серверу. Если затронута только одна большая комната, это может быть связано с состоянием комнаты и количеством участвующих серверов; сравните ее с меньшей комнатой, прежде чем делать выводы.
В руководстве по Grafana от Synapse рекомендуется проверять время отправки сообщений, загрузку ЦП и памяти, количество и длительность транзакций в базе данных, а также графики федерации. Большое количество транзакций не обязательно является узким местом; длительность и системная нагрузка также имеют значение. Проверьте названия метрик в установленной версии Synapse и текущую документацию по панели мониторинга, поскольку названия метрик со временем могли меняться.
Ссылки: Мониторинг Synapse Prometheus и понимание Synapse с помощью графиков Grafana .
Проверьте ограничения скорости и импульсные перегрузки при подключении к комнате.
В Synapse установлены отдельные rc_joinsограничения для локальных и удаленных подключений. Удаленное подключение может потребовать больше усилий, чем подключение к комнате, в которой сервер уже участвует. Synapse также имеет rc_joins_per_roomфункцию ограничения количества недавних подключений к определенной комнате, чтобы помочь сгладить волны массовых подключений. Если журналы или ответы клиента указывают на ограничение скорости, проверьте эти настройки и объем недавних подключений, прежде чем их изменять.
Не повышайте лимиты скорости в качестве общего «решения проблемы». Более высокие лимиты могут увеличить нагрузку на ваш сервер и другие домашние серверы, а также снизить защиту от массовых подключений. Если в процессе миграции или подключения пользователей наблюдается превышение установленного лимита, определите точный лимит и проверьте текущие задокументированные значения для вашей версии Synapse. Рассмотрите возможность распределения нагрузки на подключение во времени. Изменяйте по одному соответствующему значению за раз, сохраняя предыдущую конфигурацию, и отслеживайте частоту ошибок и использование ресурсов после перезагрузки или перезапуска в соответствии с требованиями вашей системы.
Справочная информация: Настройка Synapse:rc_joins и Настройка Synapse:rc_joins_per_room . Параметры по умолчанию и поддерживаемые параметры могут различаться в зависимости от версии; перед редактированием сравните их с установленной у вас версией.
Используйте тест контролируемого объединения.
- Выберите одну из затронутых комнат и запишите псевдоним или идентификатор комнаты, домашний сервер пользователя, подключившегося к ней, время и точную ошибку клиента. Никогда не включайте токены доступа в журнал поддержки.
- Проверьте имя вашего сервера в инструменте тестирования федерации и подтвердите настроенную конечную точку федерации, сертификат и маршрут прокси-сервера.
- Просмотрите журналы Synapse за указанный период времени на предмет сбоев федерации, ошибок удаленного адресата, таймаутов или ответов об ограничении скорости. Найдите соответствующие задержки в журналах обратного прокси-сервера и базы данных.
- Проверьте состояние повторных попыток в API администрирования федерации, связанное с соответствующими удаленными целевыми устройствами. Сравните затронутые комнаты с контрольной комнатой, которая подключается без проблем.
- Сравните метрики Prometheus и хоста за один и тот же интервал времени. Обратите внимание на повышенную задержку запросов, длительность транзакций с базой данных, загрузку ЦП, нехватку памяти или всплеск активности федерации.
- Внесите одно целенаправленное исправление — например, устраните проблему с DNS/TLS/прокси, решите проблему с узким местом в базе данных или скорректируйте подтвержденное ограничение скорости запросов — затем повторите тот же тест и сравните результаты.
Распространенные заблуждения, которых следует избегать
- «Медленное подключение означает, что порт 8448 моего сервера закрыт». Не обязательно. Делегирование или обратный прокси могут использовать порт 443. Проверьте фактически настроенную конечную точку федерации и протестируйте её.
- «Успешное тестирование федерации доказывает, что каждое подключение к комнате будет быстрым». Оно проверяет только общую конфигурацию федерации и подключение. Состояние удаленного сервера, состояние комнаты, локальная нагрузка и производительность базы данных все еще могут влиять на подключение. Протестируйте затронутую комнату и изучите журналы.
- «Задержка федерации всегда возникает на моем экземпляре Synapse». В документации по настройке Synapse указывается, что наблюдаемая задержка федерации может возникать как на одном из конечных устройств, так и в сети между ними. По возможности сравните конечные точки и соберите данные с обеих сторон.
- «Первое решение — добавление рабочих процессов или увеличение лимитов скорости». Эти изменения полезны только тогда, когда измерения указывают на нехватку ресурсов или ограничение скорости. Сначала определите, связана ли проблема с подключением, повторными попытками удаленного доступа, локальной перегрузкой, задержкой в базе данных или ограничением скорости соединения.
Убедитесь, что исправление сработало.
Повторите тот же тест подключения после внесения изменений. Убедитесь, что пользователь успешно подключается, затронутый целевой сервер больше не выдает повторяющихся ошибок, Federation Tester корректно отображает результаты соответствующих проверок, а задержка запроса/базы данных возвращается в нормальный диапазон. Следите за повторением проблемы в более поздний период высокой нагрузки; одна успешная попытка не доказывает стабильную работоспособность удаленного сервера или сети.
Если локальные метрики и проверки федерации выглядят нормально, но сбои наблюдаются только на одном удаленном домашнем сервере, сообщите администраторам этого сервера метку времени, адрес назначения, очищенную информацию об ошибке и соответствующие идентификаторы запросов. Если помимо медленных локальных запросов затронуто несколько комнат и адресов назначения, перед настройкой поведения федерации проверьте производительность Synapse и PostgreSQL. Укажите версию Synapse в примечаниях к инциденту, поскольку конфигурация и детали Admin API могут меняться.