最近几天折腾 docker,好不容易把 PhoenixFramework 好好运行在 container 里,却发现 ttfb waiting 时间比不用 docker 运行平均多 250ms ,要是放到生产环境这个能忍?
是不是 docker 还不够成熟还是我姿势不对?
加下 docker info:
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 4
Server Version: 1.12.3
Storage Driver: devicemapper
Pool Name: docker-253:1-24834-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 592.4 MB
Data Space Total: 107.4 GB
Data Space Available: 18.28 GB
Metadata Space Used: 1.503 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.146 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge null host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 993.1 MiB
Name: VM_46_76_centos
ID: LMQR:K5WQ:NKCQ:DIEQ:X6HQ:3YJV:ZE7A:5QYH:Z4D2:L5R3:D2TE:RZKP
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
127.0.0.0/8
1
ryd994 2016-12-07 18:23:55 +08:00 via Android
理论上 CPU 性能损失机会为零
IO 性能取决于储存驱动,对只读的不会太大 先说说你什么环境什么程序吧,不说细节谁知道呢 Windows/Mac 装 docker 然后来吐槽 docker 性能的,我见得多了 |
2
ryd994 2016-12-07 18:24:04 +08:00 via Android
几乎
|
3
rupert OP @ryd994 mac 和 qcloud 的 centos 都有试过
用 nodejs 输出 hello world 没问题,不知道要注意什么地方 |
4
tomczhen 2016-12-07 19:52:41 +08:00 via Android
先用 net=host 排除掉 nat 的影响
最好能说明下环境和 docker info 。 当然,我觉得楼主用不用 docker 跟我也没多大关系:doge: |
5
rupert OP @tomczhen 感谢回复
试了 host 模式,没变化。 之前试了个 nodejs 的 hello world ,就是为了排除 network 的影响。 |
6
duola 2016-12-08 00:59:52 +08:00
centos 对 Docker 有影响,性能会差很多,建议用 ubuntu 。
|
7
realityone 2016-12-08 01:02:45 +08:00 via iPhone 1
别用 loop lvm
用 host 网络来测 |
8
rupert OP 找到主要原因了,因为我启动的是 phoenix 的 dev 模式,会有一些监控 reload, compile
不过在 dev 模式,在 container 里面还是比外面慢了点(外面 170ms ), 还能接受,生产环境 ok 就行 |
9
zonghua 2016-12-08 09:55:26 +08:00
感觉写 Dockerfile 就是盲写啊,都是写各种 RUN ADD
|
10
jsou 2016-12-30 16:08:13 +08:00
centos loop lvm 的问题官方文档说影响很大。而且磁盘空间不释放
|