Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running Redis with Docker (performance issue)

Tags:

docker

redis

Has anyone else seen performance issues with running Redis in a Docker container environment?

Here's what I've noticed... Setup A: Local machine, traditional Redis install Setup B: Local machine, using canonical Redis image https://registry.hub.docker.com/_/redis/

I've got an identical HTTP server on my local machine that fires as fast as the request/response cycle will allow.

Observations: - A can sustain approximately 2X the throughput of B. - B performs identical to A when you benchmark (from within the container)

So, this leads me to believe that B is slower than A because of a networking issue: i.e. the networking relays introduced by running software in a virtualized environment are creating significant performance issues...

Just wondering if anyone else has noticed anything like this?

like image 913
joshula Avatar asked Oct 25 '14 00:10

joshula


1 Answers

Docker's default networking option, --net=bridge introduces overhead due to NAT packet rewriting, noticeable with high packet rates.

Network performance can be improved by using --net=host, instructing Docker to not create a separate network stack for the container, allowing full access to the host network interfaces.

This option should be used carefully though, as it lets container processes open low-numbered ports like any other root process, and access local network services like D-bus, which can lead to processes in the container being able to do unexpected things.

In short: If you know what you are running inside the container it is safe. If you suspect unwanted or aggressive behavior - do not do it.

like image 67
Antoan Milkov Avatar answered Sep 18 '22 11:09

Antoan Milkov