我們正在将測試環境逐漸從mesos架構遷移到阿裡雲的容器服務,在此過程中測試了四種不同的服務之間互相通路的模式的網絡性能。本文闡述了該性能測試的方法,資料和結論。
服務容器之間的互動存在四種不同的通路方式:
docker提供的link方式,可以在一個容器中通路另一個容器。 測試host為app-link。
在編排服務時,為每一個服務指定一個hostname,在其他服務中可以使用hostname通路對應的服務。測試host為app。
容器服務基于haproxy實作的一套服務間http通路和負載均衡的機制。測試host為app.local。
傳統的負載均衡服務,有http和tcp兩種監聽模式。測試中http slb host為192.168.1.10,tcp slb host為192.168.1.40。
分别通過這四種網絡通路目标機器上的http服務接口/ok并測試延遲(latency)和吞吐量(throughput)。
httping:測試延遲
ab(apache benchmarking tool):測試吞吐量
ubuntu 下安裝:
link:
hostname
服務發現
http slb
tcp slb
測試了100次head請求,平均時延如下表:
通路方式
延時(ms)
docker link
0.5
0.7
0.9
1.2
1.3
link
同時10000個并發請求,有580個請求slb nginx傳回了504錯誤,以下為response。
并發請求10000次,每秒處理的請求數如下表:
吞吐量(rps)
11571.74
9476.49
2338.60
1585.41
5287.14
從資料上看,使用docker link機制通路服務,無論是延遲和吞吐量都是最好的,hostname方式其次
同是 http 模式的服務發現和http slb,性能最差
http slb的并發性能似乎并不理想,10000個請求有5.8%的請求傳回了504 gateway錯誤
雖然docker link和hostname網絡性能最佳,但不清楚其負載能力如何。測試中我們發現hostname方式是具有負載能力的,不過在官方幫助文檔中,hostname通路方式被放在『不具備負載均衡能力的通路方式』中,而且被描述為『能做到一定的負載均衡的作用』。可見阿裡雲并沒有強調其負載能力。如果在生産環境中使用,負載均衡能力也是相當重要的一個名額。
最後,這兩個問題還需要向阿裡雲進一步确認:
link和hostname模式的負載能力到底如何?
對于具備負載衡量能力、http模式,内網使用這三個要求,是否有推薦使用的網絡模式?