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

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

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

Онлайн-курс по Kubernetes – для разработчиков, администраторов, технических лидеров, которые хотят изучить современную платформу для микросервисов Kubernetes. Самый полный русскоязычный курс по очень востребованным и хорошо оплачиваемым навыкам. Курс не для новичков – нужно пройти вступительный тест.

Дело тут может быть вот в чем. Основные накладные расходы в данной ситуации - в работе сети. И конечная производительность будет зависеть именно от нее. По работе 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

Онлайн курс по Kubernetes

Онлайн-курс по Kubernetes – для разработчиков, администраторов, технических лидеров, которые хотят изучить современную платформу для микросервисов Kubernetes. Самый полный русскоязычный курс по очень востребованным и хорошо оплачиваемым навыкам. Курс не для новичков – нужно пройти вступительный тест.

Если вы ответите "да" хотя бы на один вопрос, то это ваш курс:
  • устали тратить время на автоматизацию?
  • хотите единообразные окружения?;
  • хотите развиваться и использовать современные инструменты?
  • небезразлична надежность инфраструктуры?
  • приходится масштабировать инфраструктуру под растущие потребности бизнеса?
  • хотите освободить продуктовые команды от части задач администрирования и автоматизации и сфокусировать их на развитии продукта?
Сдавайте вступительный тест по ссылке и присоединяйтесь к новому набору!.

Автор Zerox

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

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

Ваш адрес email не будет опубликован.

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