Диагностика проблем с производительностью

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

Инструменты для диагностики проблем с производительностью

Для диагностики проблем с производительностью YDB используются следующие инструменты:

Классификация проблем с производительностью YDB

Проблемы с производительностью YDB можно разделить на несколько категорий. Данный раздел документации предоставляет общее описание этих категорий, начиная с самого низкого уровня системы и поднимаясь до уровня клиента. Сами инструкции по диагностике проблем см. ниже.

Проблемы с инфраструктурой

  • Сетевые проблемы. Перегрузка сети внутри датацентра и особенно между датацентрами, может значительно повлиять на производительность YDB.

  • Сбои в работе датацентров. Нарушения работы датацентров могут привести к недоступности сервиса или данных. Для решения данной проблемы кластер YDB можно настроить на работу в трёх датацентрах или зонах доступности. Однако при этом также необходимо учитывать вопрос производительности.

  • Сервисные работы и учения датацентров. Плановые сервисные работы или учения для подготовки персонала к потенциальным чрезвычайным ситуациям и сбоям также могут влиять на производительность выполнения запросов. В зависимости от масштаба сервисных работ или сценария учений серверы YDB могут стать недоступными, что повлечёт за собой те же последствия, что и сбой в работе датацентра.

  • Аппаратные неисправности серверов. Неисправный процессор, модули памяти или сетевые карты значительно влияют на производительность базы данных или приводят к полной недоступности сервера.

Проблемы с нехваткой аппаратных ресурсов

Такие проблемы возникают, когда нагрузка на базу данных требует больше аппаратных ресурсов — таких как процессор, память, дисковое пространство или пропускная способность сети — чем было выделено. В некоторых случаях неоптимальное выделение ресурсов, например неправильная настройка контрольных групп (cgroups) или пулов ресурсов акторной системы, может привести к нехватке аппаратных ресурсов для YDB и увеличить задержки запросов, даже если для сервера баз данных было выделено достаточно аппаратных ресурсов.

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

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

  • Недостаточный объём памяти (RAM). Обработка запросов требует памяти для временного хранения промежуточных данных. Недостаток свободной памяти может негативно повлиять на производительность базы данных.

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

Проблемы на уровне операционной системы

  • Расхождение системного времени на серверах. Увеличение расхождения системного времени на серверах YDB приводит к росту задержек распределённых транзакций. Большая разница во времени приводит к невозможности выполнения распределённых транзакций.

Проблемы на уровне конфигурации YDB

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

  • Ошибки конфигурации пулов ресурсов акторной системы.

Проблемы, связанные со схемами таблиц

  • Перегруженные таблетки data shard. Таблетки data shard, обслуживающие строчные таблицы, могут быть перегружены по нескольким причинам. Такая перегрузка приводит к росту задержек при выполнении запросов, выполняемых этими таблетками.

  • Избыточные разделения и слияния партиций таблиц. YDB поддерживает автоматическое разделение и слияние таблеток data shard, что позволяет легко адаптироваться к изменениям в рабочих нагрузках. Однако эти операции не являются бесплатными и могут оказать кратковременное негативное влияние на задержки запросов.

Проблемы, связанные с клиентскими приложениями

  • Проблемы с запросами. Неэффективные запросы к базе данных могут выполняться значительно медленнее.

  • Проблемы использования SDK. Проблемы, связанные с неоптимальным или неправильным использованием YDB SDK.

Инструкции

При диагностике проблем с производительностью YDB следует рассматривать каждую потенциальную причину проблемы как гипотезу. Систематично проанализируйте список гипотез и проверьте, применимы ли они к вашей ситуации. Каждая статья содержит описание проблемы, шаги по диагностике и рекомендации по решению проблемы, если гипотеза подтвердилась.

Если что-либо поменялось в системе, и время изменения совпадает с временем возникновения проблемы, связанные с изменением потенциальные причины следует рассмотреть в первую очередь. В ином случае рассмотрите возможные причины проблем с производительностью в приведённом ниже порядке, основанном на частотности проблем в крупных кластерах YDB:

  1. Перегруженные шарды и ошибки overloaded;

  2. Разделение и слияние партиций таблиц;

  3. Частые переезды таблеток между узлами;

  4. Недостаточные аппаратные ресурсы:

  5. Аппаратные неисправности и Сбои в работе датацентров;

  6. Сетевые проблемы;

  7. Процедура последовательного перезапуска;

  8. Расхождение системного времени между серверами;

  9. Инвалидация блокировок транзакций;

  10. Сервисные работы и учения датацентров.