+-

我测试了基于的redis容器.
https://index.docker.io/u/dockerfile/redis/
https://index.docker.io/u/dockerfile/redis/
使用相同的redis-benchmark,redis-server在容器内运行要比在托管操作系统上运行慢得多,实际统计数据如下所示. (第一个基准是Docker容器)
那么,有没有办法优化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
最佳答案
容器似乎较慢,因为您正在通过额外的网络层.
在这种情况下,不是直接连接到Redis,而是连接到Docker userland代理,它本身连接回容器(而不是通过本地接口,此连接通过veth接口).
这增加了一点延迟(与例如10ms的网页生成相比不可测量;但是如果你看到我的意思,50μs仍然比150μs更快).
如果你想进行更多的“苹果对苹果”比较,你可以:
>在容器内运行redis-benchmark(从容器内直接连接到Redis);
>在另一台机器上运行redis-benchmark(但请记住,您仍然需要为端口转换机制提供额外的网络层);
>在另一台机器上运行redis-benchmark并使用像pipework这样的机制为容器提供一个(几乎)零开销的macvlan接口.
点击查看更多相关文章
转载注明原文:如何优化docker容器的性能? - 乐贴网