测试Docker的网络处理性能

测试结论

  • 性能对比:
    物理机 : MacVlan : Iptables = 100 : 90 : 60
  • mcrouter 性能不理想或待调优(本章配角、不讨论)。

物理机

  • 采用Docker镜像里相同配置 /etc/memcached.conf:
-d
logfile /var/log/memcached.log
-m 64
-p 11211
-u memcache
-l 0.0.0.0
  • 使用 memtier-benchmark 压测:

memtier-benchmark -s 192.168.11.164 -p 11211 -P memcache_text -c 100 -t 10

  • 测试结果 497965 ops/sec

iptables

创建 Memcached 集群
docker pull docker-reg.higkoo.com/memcached
docker run --name memcached1 -d -p 10001:11211 docker-reg.higkoo.com/memcached:latest
docker inspect -f "{{.NetworkSettings.IPAddress}}" memcached1
docker run --name memcached2 -d -p 10002:11211 docker-reg.higkoo.com/memcached:latest
docker inspect -f "{{.NetworkSettings.IPAddress}}" memcached2
docker run --name mcrouter1 -d -p 10000:5000 docker-reg.higkoo.com/mcrouter:latest mcrouter --config-str='{"pools":{"A":{"servers":["10.10.2.1:11211","10.10.2.2:11211"]}},"route":"PoolRoute|A"}' -p 5000 --num-proxies=16
docker run docker-reg.higkoo.com/mcrouter:latest mcrouter --help
iptables -t nat -nL
查看防火墙规则
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.10.2.0/24         0.0.0.0/0
MASQUERADE  tcp  --  10.10.2.1            10.10.2.1            tcp dpt:11211
MASQUERADE  tcp  --  10.10.2.2            10.10.2.2            tcp dpt:11211
MASQUERADE  tcp  --  10.10.2.3            10.10.2.3            tcp dpt:5000
Chain DOCKER (2 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:10001 to:10.10.2.1:11211
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:10002 to:10.10.2.2:11211
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:10000 to:10.10.2.3:5000
测试各组件性能
  • memtier-benchmark -s 192.168.22.33 -p 10001 -P memcache_text -c 100 -t 10

memcached1 = 277007 ops/sec
memcached2 = 296154 ops/sec
mcrouter1 = 308023 ops/sec

macvlan

创建 Memcached 集群
docker network create  -d macvlan --subnet 192.168.33.0/24 --gateway 172.19.22.1 -o parent=br1033 docker-mac
docker run -d --net=docker-mac --ip=192.168.33.231 --name memcache3 docker-reg.higkoo.com/memcached
docker run -d --net=docker-mac --ip=192.168.33.232 --name memcache4 docker-reg.higkoo.com/memcached
docker run -d --net=docker-mac --ip=192.168.33.230 --name mcrouter2 docker-reg.higkoo.com/mcrouter:latest mcrouter --config-str='{"pools":{"A":{"servers":["192.138.33.231:11211","192.168.33.232:11211"]}},"route":"PoolRoute|A"}' -p 10003 --num-proxies=16
测试各组件性能
  • memtier-benchmark -s 192.168.33.230 -p 10003 -P memcache_text -c 100 -t 10

memcached1 = 464670 ops/sec
memcached2 = 429096 ops/sec
mcrouter1 = 393486 ops/sec

  • host方式不仅性能接近物理机,易管理性也类似物理机 ;>
  • overlay功能非常强大、性能弱到掉渣,本轮测试没用它。因为之前测试时,加压能把物理机打挂(内存耗尽)。
  • macvlan是性能和易用性折衷的不错选择,推荐!

测试环境

  • 测试机和服务器同配置,在相同的万兆交换下。
  • 系统信息:
Linux docker-svr-01 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux  
Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz  * 2  
MemTotal:       32966476 kB
System Information
        Manufacturer: Dell Inc.
        Product Name: PowerEdge M620
        Version: Not Specified
        Serial Number: 2L82233
        UUID: 1C2C3C4C-223C-3818-8658-B2C04F422233
        Wake-up Type: Power Switch
        SKU Number: SKU=NotProvided;ModelName=PowerEdge M620
        Family: Not Specified

Docker信息

  • 本次测试过程中iptables简单调优如下:
ipt_hsize=$(grep 'MemTotal' /proc/meminfo | awk '{printf("%d",$2/16)}')
echo "${ipt_hsize}" > /sys/module/nf_conntrack/parameters/hashsize
echo "${ipt_hsize}" > /sys/module/nf_conntrack_ipv4/parameters/hashsize
echo "options nf_conntrack hashsize=${ipt_hsize}" > ${ipt_mod_conf} # /sys/module/nf_conntrack/parameters/hashsize
sysctl -e -w net.nf_conntrack_max=4194304
sysctl -e -w net.ipv4.netfilter.ip_conntrack_max=4194304
sysctl -e -w net.netfilter.nf_conntrack_max=4194304
sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_established=1200
sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=60
sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=120

转载于:https://my.oschina.net/higkoo/blog/714226

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值