Эта страница переведена с помощью Cloud Translation API.
Switch to English

Профилируйте свою базу данных

Измерьте производительность своей базы данных Firebase Realtime с помощью инструмента профилирования базы данных, встроенного в интерфейс командной строки Firebase . Инструмент профилировщика регистрирует все действия в вашей базе данных за определенный период времени, а затем генерирует подробный отчет. Используйте подробный отчет для устранения проблем с производительностью вашей базы данных, выявления проблемных областей и уменьшения количества неиндексированных запросов.

Создайте профиль

  1. Прежде чем приступить к профилированию базы данных Firebase Realtime, убедитесь, что вы используете последнюю версию интерфейса командной строки Firebase и инициализировали ее для базы данных и проекта, которые хотите профилировать. Обратите внимание, что для профилирования вы должны быть редактором или владельцем этого проекта.

  2. Начните профилирование своей базы данных с помощью следующей команды:

    firebase database:profile
    Профилировщик отображает сообщение о состоянии, поскольку он записывает операции из вашей базы данных и создает профиль.

  3. Нажмите Enter, чтобы заполнить профиль и отобразить результаты.

Интерпретируйте свои результаты

Инструмент профилировщика объединяет собранные данные об операциях вашей базы данных и отображает результаты по трем основным категориям: скорость , пропускная способность и неиндексированные запросы .

Скорость

Отчет о скорости измеряет время ответа сервера (в миллисекундах) для каждого типа операции. Однако скорость, измеренная в отчете о скорости, может на самом деле не отражать скорость, с которой сталкиваются конечные пользователи. Различные факторы, включая состояние сети, могут увеличить задержку на стороне клиента.

Отчет о скорости включает в себя следующие свойства:

  • Путь: путь в вашей базе данных, где произошли операции. Если дочерних узлов больше 25, профилировщик сворачивает их в родительский путь и добавляет маркер $wildcard . Вы можете увидеть в отчете корневой каталог вашей базы данных, представленный косой чертой / .
  • Счетчик: количество операций, выполненных на заданном пути.
  • Средняя скорость выполнения: среднее время, необходимое серверу для выполнения бизнес-логики, необходимой для обработки конкретного типа операции на этом пути. Измеренный здесь временной интервал начинается после того, как измеряется «Среднее время ожидания», описанное ниже.
  • Среднее время ожидания: среднее время ожидания запросов перед выполнением. Эта задержка характерна для всех запросов, инициированных клиентом. Общая задержка запроса на стороне сервера примерно равна сумме времени ожидания этого запроса и скорости выполнения.
  • Permission Denied: количество операций по указанному пути, которые были заблокированы правилами базы данных Firebase в вашей базе данных.
Отчет о скорости по типу операции
Скорость выполнения чтения Время ответа сервера на запросы клиентов на чтение данных из базы данных. Время выполнения чтения обычно масштабируется с объемом считываемых данных, но даже некоторые небольшие чтения могут быть отложены из-за предварительной выборки из кеша.
Скорость выполнения записи Время ответа сервера на запросы клиентов на запись данных в базу данных. Время выполнения записи зависит от количества записываемых данных.
Скорость выполнения подключения Время ответа сервера на запросы, которые необходимо установить клиентам базы данных. Задержка для запросов на соединение определяется в памяти серверной бухгалтерией, связанной с управлением соединениями.
Скорость выполнения широковещательной передачи

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

Свойство Count в отчете о скорости широковещательной рассылки объединяет количество выполненных широковещательных рассылок, а не количество клиентов, получивших информацию. Например, если 10 клиентов слушали по заданному пути, а сервер транслировал обновление всем 10 клиентам, счетчик широковещательных рассылок отражает только 1 широковещательную рассылку, даже если данные получили 10 клиентов.

Свойство Permission Denied не включается в отчет о скорости трансляции.

Пропускная способность

Отчет о пропускной способности дает представление о том, сколько данных потребляет ваша база данных при входящих и исходящих операциях. Однако вам не следует использовать отчет о пропускной способности для оценки выставления счетов, поскольку он не включает пропускную способность, используемую для других операций, таких как профилирование вашей базы данных. Отчет о пропускной способности приблизительно оценивает размер полезной нагрузки данных, потребляемых операциями чтения, записи и широковещательной передачи в вашу базу данных и из нее. Это инструмент для измерения производительности, а не для прогнозирования выставления счетов.

Отчет о пропускной способности включает следующие свойства:

  • Путь: путь в вашей базе данных, где произошли операции. Если дочерних узлов больше 25, профилировщик сворачивает их в родительский путь.

  • Всего: общее количество исходящих или входящих байтов, использованных для всех операций по заданному пути.

  • Счетчик: количество операций, выполненных на заданном пути.

  • Среднее: среднее количество загруженных или выгруженных байтов по операциям по заданному пути (байты / запись или байты / чтение).

Отчет о пропускной способности
Загруженные байты Данные, потребляемые посредством операций чтения и широковещательной рассылки, отправляются через клиентские SDK и REST API.
Загружено байтов Данные, потребляемые через запросы записи, поступающие на сервер базы данных. Удаления отображаются как записи с 0 байтами под входящими.

Неиндексированные запросы

Неиндексированные запросы могут быть дорогостоящими, потому что клиенты загружают все данные в определенном месте, а затем выполняют по ним запросы. Это использует больше полосы пропускания, чем необходимо. Разрешите как можно больше неиндексированных запросов, чтобы оптимизировать производительность вашей базы данных.

В отчете «Неиндексированные запросы» отображаются следующие свойства:

  • Путь: путь в вашей базе данных, по которому произошли неиндексированные запросы.
  • Индекс: правило, которое вы должны добавить, чтобы разрешить неиндексированные запросы. Узнайте больше об индексировании в разделе Индексирование ваших данных .
  • Счетчик : количество неиндексированных запросов, возникших по заданному пути.

Расширенное профилирование

Чтобы увидеть все операции, которые выполняет ваша база данных, используйте флаг --raw при профилировании базы данных, как показано ниже:

firebase database:profile --raw

Необработанные выходные данные также включают информацию о клиенте для каждой операции, такую ​​как строки userAgent и IP-адреса. Узнайте больше о различных операциях, профилированных в базе данных Firebase Realtime, в разделе Типы операций базы данных Firebase Realtime .

Инструмент профилирования: не инструмент для выставления счетов

Не используйте профилировщик для оценки стоимости полосы пропускания. Инструмент профилировщика предназначен для того, чтобы дать вам общую картину производительности вашей базы данных, чтобы помочь вам отслеживать операции и устранять проблемы, а не оценивать выставление счетов. Он не учитывает сетевой трафик, он только записывает оценку данных приложения, отправленных в ответах.

Ниже приведены некоторые распространенные примеры сетевого трафика, оплачиваемого Firebase, который не включен в ваш профиль базы данных:

  • Издержки протокола: для установления и поддержания сеанса необходим некоторый дополнительный трафик между сервером и клиентами. В зависимости от базового протокола этот трафик может включать: накладные расходы протокола реального времени базы данных Firebase Realtime, накладные расходы WebSocket и накладные расходы заголовка HTTP. Каждый раз, когда устанавливается соединение, эти накладные расходы в сочетании с накладными расходами на шифрование SSL вносят свой вклад в стоимость подключения. Хотя обычно это небольшая полоса пропускания, она может быть значительной, если ваши полезные данные крошечные или вы делаете частые короткие соединения.
  • Накладные расходы на шифрование SSL. Накладные расходы на шифрование SSL, необходимые для безопасных соединений, связаны с расходами. В среднем эта стоимость составляет примерно 3,5 КБ для первоначального рукопожатия и примерно 40 Б для заголовков записей TLS в каждом исходящем сообщении. Для большинства приложений это небольшой процент от вашего счета. Однако это может стать большим процентом, если в вашем конкретном случае требуется много подтверждений SSL. Например, устройства, которые не поддерживают билеты сеанса TLS, могут потребовать большого количества подтверждений соединения SSL.

Узнайте больше о понимании и оценке вашего счета .