为什么使用docker容器的系统会有这样的开销?
我有一个下面的问题。 我最近在Spring上devise了一个Java应用程序,它可以与数据库一起工作。 我决定进行压力testing。 应用程序和数据库都驻留在虚拟的Debian机器上。 我用gatlingtesting它,这是我得到的:
请求数600(OK = 600 KO = 0)
最小响应时间12(OK = 12 KO = – )
最大响应时间159(OK = 159 KO = – )
平均响应时间21(OK = 21 KO = – )
标准偏差13(OK = 13 KO = – )
响应时间第50百分位数17(OK = 17 KO = – )
响应时间第75百分位数22(OK = 22 KO = – )
意思请求/秒10.01(OK = 10.01 KO = – )
t <800 ms 600(100%)
800 ms <t <5000 ms 0(0%)
t> 5000 ms 0(0%)
失败0(0%)
到现在为止还挺好。 在那之前,我决定把数据库和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
现在,用gatlingtesting之后,我得到了以下结果:
—-全球信息——————————————– ————
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集装箱很像本地处理,他们不应该运行缓慢。
- Docker文件:入口点脚本的Chmod
- 如何为docker创build覆盖networking,获取作用域“global”的错误数据存储没有初始化
- Docker当前文件不足导致Docker服务无法在Centos 7中启动
- 如何在创buildKubernetes yaml文件之前获取群集IP信息?
- 在官方仓库中更新一些软件包时触发dockerhub上的自动构build
- ssh使用golang中的交互式shell执行nsenter作为远程命令来debuggingdocker容器
- 如何让Docker集线器为“最新”和“vX.Y”使用相同的映像?
- Kubernetes:VPN服务器和DNS问题
- Docker容器无法parsing请求到另一个容器中的服务