Несмотря на то, что контейнеры используются уже много лет, не у всех есть понимание, какие накладные расходы они в себе несут. Просматривал сегодня ленту Хабр Q&A и увидел пару вопросов на тему производительности БД (1 - https://qna.habr.com/q/842253), 2 - https://qna.habr.com/q/846155). Написавшие вопрос заметили, что в контейнере производительность базы данных заметно ниже, чем на железе или в виртуальной машине.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Дело тут может быть вот в чем. Основные накладные расходы в данной ситуации - в работе сети. И конечная производительность будет зависеть именно от нее. По работе CPU никаких накладных расходов в работе БД нет. Это подтверждают исследования от Percona (https://www.percona.com/blog/2016/02/05/measuring-docker-cpu-network-overhead/), где один из разработчиков протестировал работу базы в разных режимах и выяснил, что основной ovehead добавляет сеть. Если вы запустите контейнер с параметром --net=host, то получите сопоставимую производительность с работой на железе.
Кому лень читать всю статью на английском, приведу сразу результаты:
- Железо - 7100 транзакций в секунду. Это максимум.
- БД в контейнере, подключение с хоста через замапленный tcp порт - 2200 транз/c. Самый слабый результат, так как подключение идет через проброс порта в iptables.
- БД в контейнере, который подключен напрямую в сеть хоста через net=host, подключение с хоста. Результат - те же самые 7100 транз/c.
- БД в контейнере, подключение из другого контейнера. Контейнеры соединены между собой через docker bridge. Результат - 6300 транз/c.
Так что делайте выводы сами, как вы будете работать с базой данных в докере. Кстати, на эту тему рекомендую хоть и немного устаревший, но очень крутой доклад:
Источник - мой канал: https://t.me/srv_admin/391