
最近几天折腾 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 别用 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 的问题官方文档说影响很大。而且磁盘空间不释放 |