更新时间:2023-12-03 13:32:58
容器出现要慢一点,因为你要经历一个额外的网络层。
在这种情况下,我直接连接到Redis,连接到Docker用户地址代理,该代理本身连接到容器(而不是通过本地界面)连接到$ code> veth 接口)。
这增加了一点延迟(与10ms网页生成相比,不可衡量)但是50μs仍然比150μs快,如果你看到我的意思)。
如果你想做一个更苹果的比较,你可以:在容器内运行redis-benchmark(从容器内直接连接到Redis);
I tested redis container based on. https://index.docker.io/u/dockerfile/redis/
With same redis-benchmark, redis-server runs inside container much slower than run on hosted os, the actual statistics shows below. (first benchmark is for dock container)
So, Is there away to optimize performance for docker?
vagrant@precise64:/tmp$ redis-benchmark -p 49153 -q -n 100000
PING (inline): 5607.27 requests per second
PING: 6721.79 requests per second
MSET (10 keys): 6085.69 requests per second
SET: 6288.91 requests per second
GET: 6627.78 requests per second
INCR: 6454.11 requests per second
LPUSH: 6449.12 requests per second
LPOP: 5355.90 requests per second
SADD: 6237.91 requests per second
SPOP: 6794.40 requests per second
LPUSH (again, in order to bench LRANGE): 6089.76 requests per second
LRANGE (first 100 elements): 6000.24 requests per second
LRANGE (first 300 elements): 4660.70 requests per second
LRANGE (first 450 elements): 4276.79 requests per second
LRANGE (first 600 elements): 3710.85 requests per second
vagrant@precise64:/tmp$
vagrant@precise64:/tmp$ sudo /etc/init.d/redis-server start
Starting redis-server: redis-server.
vagrant@precise64:/tmp$ redis-benchmark -q -n 100000
PING (inline): 19357.34 requests per second
PING: 19175.46 requests per second
MSET (10 keys): 16697.28 requests per second
SET: 19146.08 requests per second
GET: 19175.46 requests per second
INCR: 19135.09 requests per second
LPUSH: 19168.10 requests per second
LPOP: 14976.79 requests per second
SADD: 16638.93 requests per second
SPOP: 18079.91 requests per second
LPUSH (again, in order to bench LRANGE): 18268.18 requests per second
LRANGE (first 100 elements): 16136.84 requests per second
LRANGE (first 300 elements): 11528.71 requests per second
LRANGE (first 450 elements): 9237.88 requests per second
LRANGE (first 600 elements): 8864.46 requests per second
The container appears to be slower because you are going through an extra network layer.
In that case, instead of connecting directly to Redis, to connect to the Docker userland proxy, which itself connects back to the container (and instead of going over a local interface, this connection goes over a veth
interface).
This adds a little bit of latency (not measurable compared to, e.g, a 10ms webpage generation; but 50µs is still faster than 150µs, if you see what I mean).
If you want to do a more "apples to apples" comparison, you could: