Накладные расходы при работе базы данных в контейнере

Несмотря на то, что контейнеры используются уже много лет, не у всех есть понимание, какие накладные расходы они в себе несут. Просматривал сегодня ленту Хабр Q&A и увидел пару вопросов на тему производительности БД (1 - https://qna.habr.com/q/842253), 2 - https://qna.habr.com/q/846155). Написавшие вопрос заметили, что в контейнере производительность базы данных заметно ниже, чем на железе или в виртуальной машине.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Дело тут может быть вот в чем. Основные накладные расходы в данной ситуации - в работе сети. И конечная производительность будет зависеть именно от нее. По работе CPU никаких накладных расходов в работе БД нет. Это подтверждают исследования от Percona (https://www.percona.com/blog/2016/02/05/measuring-docker-cpu-network-overhead/), где один из разработчиков протестировал работу базы в разных режимах и выяснил, что основной ovehead добавляет сеть. Если вы запустите контейнер с параметром --net=host, то получите сопоставимую производительность с работой на железе.

Кому лень читать всю статью на английском, приведу сразу результаты:

  1. Железо - 7100 транзакций в секунду. Это максимум.
  2. БД в контейнере, подключение с хоста через замапленный tcp порт - 2200 транз/c. Самый слабый результат, так как подключение идет через проброс порта в iptables.
  3. БД в контейнере, который подключен напрямую в сеть хоста через net=host, подключение с хоста. Результат - те же самые 7100 транз/c.
  4. БД в контейнере, подключение из другого контейнера. Контейнеры соединены между собой через docker bridge. Результат - 6300 транз/c.

Так что делайте выводы сами, как вы будете работать с базой данных в докере. Кстати, на эту тему рекомендую хоть и немного устаревший, но очень крутой доклад:

Источник - мой канал: https://t.me/srv_admin/391

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar