为什么使用docker容器的系统会产生这样的开销?

时间:2017-02-28 11:51:26

标签: docker docker-compose

我有一个问题。我最近在Spring上设计了一个java应用程序,它与数据库一起工作。我决定进行压力测试。应用程序和数据库都驻留在虚拟Debian机器上。我用gatling测试了它,这就是我得到的:

  

请求数600(OK = 600 KO = 0)

     

最小响应时间12(OK = 12 KO = - )

     

最大响应时间159(OK = 159 KO = - )

     

平均响应时间21(OK = 21 KO = - )

     

std偏差13(OK = 13 KO = - )

     

响应时间第50百分位数17(OK = 17 KO = - )

     

响应时间第75百分位数22(OK = 22 KO = - )

     

表示请求/秒10.01(OK = 10.01 KO = - )

     

t< 800毫秒600(100%)

     

800 ms< t< 5000毫秒0(0%)

     

t> 5000毫秒0(0%)

     

失败0(0%)

到目前为止,这么好。 Ater,我决定将数据库和jar放入两个容器中。这是一个docker-compose.yml样本:

  prototype-db:
    build: prototype-db
    volumes:
       - ./prototype-db/data:/var/lib/mysql:rw
       - ./prototype-db/scripts:/docker-entrypoint-initdb.d:ro
    ports:
       - "3306"
  prototype:
    image: openjdk:8
    command: bash -c "cd /deploy && java -jar application.jar" 
    volumes:
      - ./application/target:/deploy
    depends_on:
      - prototype-db
    ports:
      - "8080:8080"
    dns:
      - 172.16.10.1
      - 172.16.10.2

Dockerfile如下所示:

FROM mysql:5.7.15

ENV MYSQL_DATABASE=document \
    MYSQL_ROOT_PASSWORD=root \
    MYSQL_USER=testuser \
    MYSQL_PASSWORD=12345

EXPOSE 3306

现在,在用gatling测试后,我得到了以下结果:

----全球资讯----------------------------------------- ---------------

request count 6000 (OK=3946 KO=2054 )
min response time 0 (OK=124 KO=0 )
max response time 18336 (OK=18336 KO=77 )
mean response time 5021 (OK=7630 KO=10 )
std deviation 4136 (OK=2478 KO=9 )
response time 50th percentile 6516 (OK=8694 KO=9 )
response time 75th percentile 8732 (OK=8905 KO=14 )
mean requests/sec 87.433 (OK=57.502 KO=29.931)

----响应时间分配---------------------------------------- --------

t < 800 ms 65 ( 1%)
800 ms < t < 5000 ms 532 ( 9%)
t > 5000 ms 3349 ( 56%)
failed 2054 ( 34%)

----错误------------------------------------------ --------------------------

java.io.IOException: Remotely closed 1494 (72.74%)
status.find.is(200), but actually found 500 560 (27.26%)

这太棒了 - 平均响应时间大大超出了很多错误,但是这个docker组合系统运行在同一个虚拟debian机器上。什么可能导致这样的开销,我认为docker容器很像本机处理,它们不应该运行那么慢。

0 个答案:

没有答案