[英]i/o intensive java application speeds up on docker on limited resources
我有一個I / O密集型Java tomcat應用程序,我想在一個更現代的群集環境中執行htmlunit-tests。 因此,我還考慮了泊塢窗,該泊塢窗可能會通過應用群體等方式提供出色的功能。
測試針對oracle數據庫運行,並且還在本地I / O上創建流量。 我只是對一個問題感到好奇:
當我使用資源有限的普通安裝產品運行測試時(在1個CPU系統上load15系數提高到2以上),使用dockerized方法將測試執行時間比在相同環境(資源有限)下慢35%。測試執行。 如果有足夠的資源將負載率保持在1以下(在1個CPU系統上),則純安裝和dockerized安裝之間的運行時間幾乎相同。
我正在尋找解釋這一點的方法。 與某些覆蓋文件系統緩存機制有關嗎? 在調查此事時要看哪里?
該答案非常特定於您的應用程序,因此您所能做的就是測試各種Docker存儲設置。
首先,使用本地數據量測試應用。 本地卷或將本地目錄安裝為卷 。 這樣可以省去大部分的開銷,並且應盡可能接近主機IO的速度。
如果您的應用程序以全速運行,則很可能是Docker存儲驅動程序是罪魁禍首,因此您可以嘗試使用docker守護程序的替代選項,以查看哪種方法最有效。
--storage-driver==devicemapper \\ --storage-opt dm.loop*
--storage-driver==aufs
--storage-driver==overlay2
或overlay
在4.x之前的內核上。 --storage-driver==devicemapper \\ --storage-opt dm.datadev=/dev/dockervg/datalv \\ --storage-opt dm.metadatadev=/dev/dockervg/metadatalv
對每個驅動程序進行測試。
每次交換時,您的容器數據將被銷毀。
然后使用最佳驅動程序。
如果選擇該選項,則掛載本地卷可能是最快的,然后處理存儲在容器外部的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.