Mac 下 Docker 运行较慢的原因分析及个人见解
做冷欺花 人气:0
> 在mac 使用 docker 的时候,我总感觉程序在 docker 下运行速度很慢,接下来我一一分析我遇到的问题,希望大家能进行合理的讨论和建议。
### 问题:
1. valet 下打开 laravel 首页耗时 **60ms**,docker 下打开耗时 **12s**?
2. 在解决了第一个问题的前提下,docker 下仍旧耗时 **2s**?
### 解决方法:
1. 第一个问题排查过程中发现是 DNS Lookup 时间太长导致的,搜索后发现,是因为使用了`.local`域名的原因,chrome 下就会存在解析时间过长,不过 safari 下没有这个问题。解决方法就是别在本地使用 `.local`的虚拟域名。
##### 解决前:
![image-20200312182610066](https://tva1.sinaimg.cn/large/00831rSTly1gcrbjhgzzvj318u0pijv1.jpg)
##### 解决后:
##### 我们再来看一下 valet 下是什么情况:
![image-20200312182845593](https://tva1.sinaimg.cn/large/00831rSTly1gcrbm6jtpbj319s0m0wlb.jpg)
我们发现 TTFB 竟然只有 21ms,而 docker 下竟然有1.8 秒。这差距巨大的,要知道,1 s = 1000ms。
2. 在解决了第一个问题后我们发现了第二个问题,那么我找到官网说的docker 的缓存 `:cached`。我使用后,说实话,貌似毛用都没有。哈哈。
不过天无绝人之路,我突然想到,既然这个问题是因为 docker 挂载出的问题,那么我能不能在本地使用valet来解析网站,然后其他的 es、kafka 等组件我放到 docker 中。
尝试后看看结果:
![image-20200312183358476](https://tva1.sinaimg.cn/large/00831rSTly1gcrbrm7pxrj319e0u0dmj.jpg)
大家可以看到我这里使用的 valet 在本地解析网站后,连接的 docker 中的 es。ttfb 一下子就下来了。而我们再来看看 docker 下解析:
![image-20200312183518663](https://tva1.sinaimg.cn/large/00831rSTly1gcrbt0aa83j31950u0jy7.jpg)
其实差距还是蛮大的。
我们再来对比数字,**1780ms/60ms = 30 ,所以我们已经提速了 30 倍。**
### 讨论:
> 大家有没有好的提速的建议?
加载全部内容