开发者社区> 德哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

docker network performance reduce by nat module & kvm vs docker vs localhost

简介:
+关注继续查看
在测试docker下postgresql性能时, 发现的一个DNAT转换后的网络性能问题.

首先附上KVM,DOCKER,本机的几组测试数据(测试数据仅供参考, 有兴趣的朋友可以自己测试一下) : 
注意在测试连接超出物理核心数后, docker的性能开始严重下降. (可能有优化手段解决这个问题) 
TPS                      16连接IP,             16连接UNIX SOCK,  48连接UNIX SOCK,  96连接UNIX SOCK
docker DNAT               29662
docker                    174089.814292          257437.255033    265112.234836     180037.521722 
kvm                       58692.023756           62217.477740     166212.113952     162729.867472 
本机                      185341.577666          271232.160555    335530.912484     303621.978815


宿主机内核 : 
[root@db-172-16-3-221 ~]# uname -r
2.6.32-431.el6.x86_64

docker版本 : 
[root@db-172-16-3-221 ~]# docker info
Containers: 1
Images: 99
Storage Driver: devicemapper
 Pool Name: docker-8:49-17826869-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 1455.9 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 3.4 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 2.6.32-431.el6.x86_64

本地的images如下 : 
[root@db-172-16-3-221 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
postgres            9.4-beta3           68b6ddf9ca08        47 hours ago        213.6 MB
postgres            9.4                 68b6ddf9ca08        47 hours ago        213.6 MB
postgres            9                   935836384c52        47 hours ago        212.9 MB
postgres            latest              935836384c52        47 hours ago        212.9 MB
postgres            9.3                 935836384c52        47 hours ago        212.9 MB
postgres            9.3.5               935836384c52        47 hours ago        212.9 MB
postgres            9.2                 2a9ab0b9fa56        47 hours ago        212.7 MB
postgres            9.2.9               2a9ab0b9fa56        47 hours ago        212.7 MB
postgres            9.1.14              ee60947f6805        47 hours ago        212.1 MB
postgres            9.1                 ee60947f6805        47 hours ago        212.1 MB
postgres            9.0.18              f29be88283f6        47 hours ago        211.5 MB
postgres            9.0                 f29be88283f6        47 hours ago        211.5 MB
postgres            8                   c57c14beb696        47 hours ago        211 MB
postgres            8.4.22              c57c14beb696        47 hours ago        211 MB
postgres            8.4                 c57c14beb696        47 hours ago        211 MB
postgres            9.4-beta2           bf872395e1d4        2 weeks ago         213.6 MB

我们可以看看一个image的网络配置 :
[root@db-172-16-3-221 ~]# docker inspect postgres:9.3.5
[{
    "Architecture": "amd64",
    "Author": "",
    "Comment": "",
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "postgres"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": [
            "/docker-entrypoint.sh"
        ],
        "Env": [
            "PATH=/usr/lib/postgresql/9.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=en_US.utf8",
            "PG_MAJOR=9.3",
            "PG_VERSION=9.3.5-1.pgdg70+1",
            "PGDATA=/var/lib/postgresql/data"
        ],
        "ExposedPorts": {
            "5432/tcp": {}
        },
        "Hostname": "39d2c877bc4f",
        "Image": "15d042248df39ca896223c9e75f0f4541996f2b52030f1f8e6619cf18f77e395",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": {
            "/var/lib/postgresql/data": {}
        },
        "WorkingDir": ""
    },
    "Container": "977043cde52cd15e070d71a67fbd8e2ec908af49123f3f773f71cda2061e9f44",
    "ContainerConfig": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/sh",
            "-c",
            "#(nop) CMD [postgres]"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": [
            "/docker-entrypoint.sh"
        ],
        "Env": [
            "PATH=/usr/lib/postgresql/9.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=en_US.utf8",
            "PG_MAJOR=9.3",
            "PG_VERSION=9.3.5-1.pgdg70+1",
            "PGDATA=/var/lib/postgresql/data"
        ],
        "ExposedPorts": {
            "5432/tcp": {}
        },
        "Hostname": "39d2c877bc4f",
        "Image": "15d042248df39ca896223c9e75f0f4541996f2b52030f1f8e6619cf18f77e395",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": {
            "/var/lib/postgresql/data": {}
        },
        "WorkingDir": ""
    },
    "Created": "2014-10-21T05:54:39.659381225Z",
    "DockerVersion": "1.2.0",
    "Id": "935836384c524aafc0ac1c05246002c9c93343f0b4283a34e77a5f92f97f9a7c",
    "Os": "linux",
    "Parent": "15d042248df39ca896223c9e75f0f4541996f2b52030f1f8e6619cf18f77e395",
    "Size": 0
}

启动一个container, 使用-P将端口映射出来.
[root@db-172-16-3-221 ~]# docker run -d -P postgres:9.3.5
[root@db-172-16-3-221 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                     NAMES
786d815d71b0        postgres:9          /docker-entrypoint.s   2 hours ago         Up 2 hours          0.0.0.0:49155->5432/tcp   suspicious_wright   


这个时候会自动创建nat转换条目, 可以使用iptables-save命令查看, 如下有一台DNAT的规则是端口49155的转发 : 
[root@db-172-16-3-221 ~]# iptables-save
# Generated by iptables-save v1.4.7 on Thu Oct 23 14:00:48 2014
*nat
:PREROUTING ACCEPT [109:52442]
:POSTROUTING ACCEPT [90:4680]
:OUTPUT ACCEPT [90:4680]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER 
-A POSTROUTING -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j MASQUERADE 
-A POSTROUTING -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j MASQUERADE 
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER 
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 49155 -j DNAT --to-destination 172.17.0.4:5432 
COMMIT
# Completed on Thu Oct 23 14:00:48 2014


同时查看这个container的网络, 也就是说, 外部可以通过宿主机的49155 端口访问这个container的postgresql数据库.
宿主机本地则可以通过127.0.0.1:49155 或172.17.0.4:5432来访问.
问题来了 : 
通过nat访问的性能和直接访问的性能差太多了.

   "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "IPAddress": "172.17.0.4",
        "IPPrefixLen": 16,
        "PortMapping": null,
        "Ports": {
            "5432/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "49155"
                }
            ]
        }

详细 : 
[root@db-172-16-3-221 ~]# docker inspect 786d815d71b0
[{
    "Args": [
        "postgres"
    ],
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "postgres"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": [
            "/docker-entrypoint.sh"
        ],
        "Env": [
            "PATH=/usr/lib/postgresql/9.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=en_US.utf8",
            "PG_MAJOR=9.3",
            "PG_VERSION=9.3.5-1.pgdg70+1",
            "PGDATA=/var/lib/postgresql/data"
        ],
        "ExposedPorts": {
            "5432/tcp": {}
        },
        "Hostname": "786d815d71b0",
        "Image": "postgres:9.3.5",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": {
            "/var/lib/postgresql/data": {}
        },
        "WorkingDir": ""
    },
    "Created": "2014-10-23T02:51:06.152941964Z",
    "Driver": "devicemapper",
    "ExecDriver": "native-0.2",
    "HostConfig": {
        "Binds": null,
        "ContainerIDFile": "",
        "Dns": null,
        "DnsSearch": null,
        "Links": null,
        "LxcConf": [],
        "NetworkMode": "bridge",
        "PortBindings": {},
        "Privileged": false,
        "PublishAllPorts": true,
        "VolumesFrom": null
    },
    "HostnamePath": "/var/lib/docker/containers/786d815d71b0dca10042e73842634483158811a9c54509e58d7a1d2afa6fd94d/hostname",
    "HostsPath": "/var/lib/docker/containers/786d815d71b0dca10042e73842634483158811a9c54509e58d7a1d2afa6fd94d/hosts",
    "Id": "786d815d71b0dca10042e73842634483158811a9c54509e58d7a1d2afa6fd94d",
    "Image": "935836384c524aafc0ac1c05246002c9c93343f0b4283a34e77a5f92f97f9a7c",
    "MountLabel": "",
    "Name": "/suspicious_wright",
    "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "IPAddress": "172.17.0.4",
        "IPPrefixLen": 16,
        "PortMapping": null,
        "Ports": {
            "5432/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "49155"
                }
            ]
        }
    },
    "Path": "/docker-entrypoint.sh",
    "ProcessLabel": "",
    "ResolvConfPath": "/etc/resolv.conf",
    "State": {
        "ExitCode": 0,
        "FinishedAt": "0001-01-01T00:00:00Z",
        "Paused": false,
        "Pid": 22251,
        "Running": true,
        "StartedAt": "2014-10-23T02:51:06.931436989Z"
    },
    "Volumes": {
        "/var/lib/postgresql/data": "/var/lib/docker/vfs/dir/8df8643eb4f255471b744a957a168fb9e1e57b1169ade6fba8b5f3a912681e88"
    },
    "VolumesRW": {
        "/var/lib/postgresql/data": true
    }
}


这个启动container后为container创建的接口.
# ifconfig
veth2d30  Link encap:Ethernet  HWaddr 42:9B:9F:1F:09:B0  
          inet6 addr: fe80::409b:9fff:fe1f:9b0/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:6289977 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6290136 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:786242516 (749.8 MiB)  TX bytes:597549874 (569.8 MiB)
[root@db-172-16-3-221 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.429b9f1f09b0       no              veth2d30


测试如下, 执行select 1; : 
[root@db-172-16-3-221 ~]# cd
[root@db-172-16-3-221 ~]# psql -V
psql (PostgreSQL) 9.3.5
[root@db-172-16-3-221 ~]# vi test.sql
select 1;

通过NAT转换的性能 : 
[root@db-172-16-3-221 ~]# pgbench -M prepared -n -r -f ./test.sql -h 127.0.0.1 -p 49155 -U postgres -c 16 -j 4 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 16
number of threads: 4
duration: 30 s
number of transactions actually processed: 889901
tps = 29662.517330 (including connections establishing)
tps = 29677.580497 (excluding connections establishing)
statement latencies in milliseconds:
        0.537902        select 1;

直接连接container访问的性能 : 
显然使用nat转换带来的性能损失非常大, TPS下降到了17%.

[root@db-172-16-3-221 ~]# pgbench -M prepared -n -r -f ./test.sql -h 172.17.0.4 -p 5432 -U postgres -c 16 -j 4 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 16
number of threads: 4
duration: 30 s
number of transactions actually processed: 5222786
tps = 174089.814292 (including connections establishing)
tps = 174177.646184 (excluding connections establishing)
statement latencies in milliseconds:
        0.090595        select 1;

另外 , 附上直接访问宿主机本地的数据库的性能, 我们看到docker性能损失极少(约6%) : 
相比KVM虚拟化, CPU损耗方面, DOCKER的性能损耗确实非常低, KVM参考 : 

[root@db-172-16-3-221 ~]# pgbench -M prepared -n -r -f ./test.sql -h 127.0.0.1 -p 5432 -U postgres -c 16 -j 4 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 16
number of threads: 4
duration: 30 s
number of transactions actually processed: 5560383
tps = 185341.577666 (including connections establishing)
tps = 185435.133589 (excluding connections establishing)
statement latencies in milliseconds:
        0.084922        select 1;

在同一台宿主机下KVM虚拟机测试结果如下(kvm VCPU=48, 宿主机48核) : 
宿主机CPU : 

processor       : 47
vendor_id       : GenuineIntel
cpu family      : 6
model           : 46
model name      : Intel(R) Xeon(R) CPU           E7540  @ 2.00GHz
stepping        : 6
cpu MHz         : 1995.262
cache size      : 18432 KB
physical id     : 3
siblings        : 12
core id         : 11
cpu cores       : 6
apicid          : 119
initial apicid  : 119
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt lahf_lm ida epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 3989.44
clflush size    : 64
cache_alignment : 64
address sizes   : 44 bits physical, 48 bits virtual
power management:

4SOCKET
6CORE
2TH

共48核心
虚拟机CPU(问题可能出自这里) : 

processor       : 47
vendor_id       : GenuineIntel
cpu family      : 6
model           : 26
model name      : Intel Core i7 9xx (Nehalem Class Core i7)
stepping        : 3
cpu MHz         : 1995.047
cache size      : 4096 KB
physical id     : 3
siblings        : 12
core id         : 5
cpu cores       : 6
apicid          : 59
initial apicid  : 59
fpu             : yes
fpu_exception   : yes
cpuid level     : 4
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt hypervisor lahf_lm
bogomips        : 3990.09
clflush size    : 64
cache_alignment : 64
address sizes   : 44 bits physical, 48 bits virtual
power management:

KVM进程 : 
qemu     29307     1 55 15:57 ?        00:00:07 /usr/libexec/qemu-kvm -name test1 -S -M rhel6.5.0 -cpu Nehalem,+rdtscp,+x2apic,+dca,+pdcm,+xtpr,+tm2,+est,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme -enable-kvm -m 8192 -realtime mlock=off -smp 48,sockets=4,cores=6,threads=2 -uuid 073dbc6f-f376-2c96-6323-e0cc488eda68 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/test1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/var/lib/libvirt/images/test1.img,if=none,id=drive-virtio-disk0,format=raw,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=21,id=hostnet0,vhost=on,vhostfd=22 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:d6:b2:07,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6

KVM性能(损耗68%) : 
[root@db-172-16-3-221 ~]# pgbench -M prepared -n -r -f ./test.sql -h 172.17.42.222 -p 5432 -U postgres -c 16 -j 4 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 16
number of threads: 4
duration: 30 s
number of transactions actually processed: 1760790
tps = 58692.023756 (including connections establishing)
tps = 58743.201940 (excluding connections establishing)
statement latencies in milliseconds:
        0.271061        select 1;

计算密集型的话docker有明显优势.

最后再来一组unix socket的测试结果 : 
本机 : 

[root@db-172-16-3-221 ~]# pgbench -M prepared -n -r -f ./test.sql -h /data01/pgdata/pg_root -p 5432 -U postgres -c 16 -j 4 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 16
number of threads: 4
duration: 30 s
number of transactions actually processed: 8137047
tps = 271232.160555 (including connections establishing)
tps = 271348.434446 (excluding connections establishing)
statement latencies in milliseconds:
        0.057746        select 1;


docker (性能损耗5%)
[root@db-172-16-3-221 ~]# docker run -t -i postgres:9.3.5 /bin/bash
root@48f8decd3ccb:/# more docker-entrypoint.sh 
#!/bin/bash
set -e

if [ "$1" = 'postgres' ]; then
        chown -R postgres "$PGDATA"

        if [ -z "$(ls -A "$PGDATA")" ]; then
                gosu postgres initdb

                sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf

                { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf

                if [ -d /docker-entrypoint-initdb.d ]; then
                        for f in /docker-entrypoint-initdb.d/*.sh; do
                                [ -f "$f" ] && . "$f"
                        done
                fi
        fi

        exec gosu postgres "$@"
fi

exec "$@"
root@48f8decd3ccb:/# ./docker-entrypoint.sh postgres
root@48f8decd3ccb:/# echo "select 1;" > ./test.sql
root@48f8decd3ccb:/# pgbench -M prepared -n -r -f ./test.sql -h /var/run/postgresql -p 5432 -U postgres -c 16 -j 4 -T 30 postgres   transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 16
number of threads: 4
duration: 30 s
number of transactions actually processed: 7723173
tps = 257437.255033 (including connections establishing)
tps = 257554.115083 (excluding connections establishing)
statement latencies in milliseconds:
        0.060943        select 1;


kvm (性能损耗77%)
postgres@localhost-> pgbench -M prepared -n -r -f ./test.sql -h /home/postgres/pgdata/pg_root -p 5432 -U postgres -c 16 -j 4 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 16
number of threads: 4
duration: 30 s
number of transactions actually processed: 1866859
tps = 62217.477740 (including connections establishing)
tps = 62248.936343 (excluding connections establishing)
statement latencies in milliseconds:
        0.254873        select 1;


加大连接后, kvm有性能提升. 但是到顶也只能达到16.6W左右, 性能损失46.4%左右.
DOCKER的话, 超出核数后性能下降严重, 在达到物理核限制极限时, 损失12.7% 左右. 
KVM加大连接(CPU使用率1200%) : 

top - 17:54:56 up 43 days,  7:58,  3 users,  load average: 4.72, 1.43, 0.53
Tasks: 1115 total,   1 running, 1114 sleeping,   0 stopped,   0 zombie
Cpu(s): 24.9%us,  0.2%sy,  0.0%ni, 74.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  99045564k total, 13146680k used, 85898884k free,   272772k buffers
Swap:  1048568k total,        0k used,  1048568k free,  9688200k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
30008 qemu      20   0 11.8g 815m 5828 S 1204.4  0.8  20:56.29 /usr/libexec/qemu-kvm -name test1 -S -M rhel6.5.0 -cpu Nehalem,+rdtsc

postgres@localhost-> pgbench -M prepared -n -r -f ./test.sql -h /home/postgres/pgdata/pg_root -p 5432 -U postgres -c 48 -j 12 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 48
number of threads: 12
duration: 30 s
number of transactions actually processed: 4988101
tps = 166212.113952 (including connections establishing)
tps = 166348.747712 (excluding connections establishing)
statement latencies in milliseconds:
        0.285856        select 1;

postgres@localhost-> pgbench -M prepared -n -r -f ./test.sql -h /home/postgres/pgdata/pg_root -p 5432 -U postgres -c 96 -j 12 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 96
number of threads: 12
duration: 30 s
number of transactions actually processed: 4885569
tps = 162729.867472 (including connections establishing)
tps = 163017.799292 (excluding connections establishing)
statement latencies in milliseconds:
        0.585876        select 1;


本地加大连接 : 
[root@db-172-16-3-221 ~]# pgbench -M prepared -n -r -f ./test.sql -h /data01/pgdata/pg_root -p 5432 -U postgres -c 48 -j 12 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 48
number of threads: 12
duration: 30 s
number of transactions actually processed: 10068364
tps = 335530.912484 (including connections establishing)
tps = 335757.764533 (excluding connections establishing)
statement latencies in milliseconds:
        0.141343        select 1;

[root@db-172-16-3-221 ~]# pgbench -M prepared -n -r -f ./test.sql -h /data01/pgdata/pg_root -p 5432 -U postgres -c 96 -j 12 -T 30 postgres
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 96
number of threads: 12
duration: 30 s
number of transactions actually processed: 9113013
tps = 303621.978815 (including connections establishing)
tps = 304050.332175 (excluding connections establishing)
statement latencies in milliseconds:
        0.313762        select 1;


docker加大连接 : 
root@48f8decd3ccb:/# pgbench -M prepared -n -r -f ./test.sql -h /var/run/postgresql -p 5432 -U postgres -c 96 -j 12 -T 30 postgres 
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 96
number of threads: 12
duration: 30 s
number of transactions actually processed: 5403085
tps = 180037.521722 (including connections establishing)
tps = 180248.827373 (excluding connections establishing)
statement latencies in milliseconds:
        0.527325        select 1;

root@48f8decd3ccb:/# pgbench -M prepared -n -r -f ./test.sql -h /var/run/postgresql -p 5432 -U postgres -c 40 -j 10 -T 30 postgres 
transaction type: Custom query
scaling factor: 1
query mode: prepared
number of clients: 40
number of threads: 10
duration: 30 s
number of transactions actually processed: 7955103
tps = 265112.234836 (including connections establishing)
tps = 265278.332675 (excluding connections establishing)
statement latencies in milliseconds:
        0.147930        select 1;


[参考]

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【刷穿 LeetCode】求「连通图经过所有点的最短路径」的三种方式 :「BFS」&「Floyd + 状压 DP」 &「AStar 算法」
【刷穿 LeetCode】求「连通图经过所有点的最短路径」的三种方式 :「BFS」&「Floyd + 状压 DP」 &「AStar 算法」
67 0
Docker Compose:部署SpringBoot应用(含MySQL,Redis,Nacos,RabbitMQ,Nginx)
Docker Compose:部署SpringBoot应用(含MySQL,Redis,Nacos,RabbitMQ,Nginx)
473 0
VUE网页实时播放海康、大华摄像头RTSP视频流完全方案,300毫秒延迟,支持H.265、可多路同时播放
在遍地都是摄像头的今天,往往需要在各种信息化、数字化、可视化B/S系统中集成实时视频流播放等功能,海康、大华、华为等厂家摄像头或录像机等设备一般也都遵循监控行业标准,支持国际标准的主流传输协议RTSP输出,而Chrome、Firefox、Edge等新一代浏览器从2015年开始取消了NPAPI插件技术支持导致RTSP流无法直接原生播放了
832 0
SAP Fiori OData gateway 和后台 ABAP 系统的双缓存表(cache table)设计
SAP Fiori OData gateway 和后台 ABAP 系统的双缓存表(cache table)设计
45 0
SAP Fiori OData gateway 和后台 ABAP 系统的双缓存表(cache table)设计
SAP Fiori OData gateway 和后台 ABAP 系统的双缓存表(cache table)设计
52 0
DL之Mask R-CNN:2018.6.26世界杯阿根廷队VS尼日利亚比赛2:1实现Mask R-CNN目标检测
DL之Mask R-CNN:2018.6.26世界杯阿根廷队VS尼日利亚比赛2:1实现Mask R-CNN目标检测
113 0
Spring3 Web MVC 集成Jasper Report生成PDF例子
Spring3 Web MVC 集成JasperReport生成PDF例子 一:环境搭建与配置 1.      安装JDK6以上版本 2.      安装STS, 下载地址如下:http://www.
1052 0
+关注
德哥
公益是一辈子的事, I am digoal, just do it.
2156
文章
245
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载