1. 程式人生 > >Mac 下 Docker 執行較慢的原因分析及個人見解

Mac 下 Docker 執行較慢的原因分析及個人見解

> 在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 倍。** ### 討論: >
大家有沒有好的提速的