簡體   English   中英

I / O密集型Java應用程序在有限資源上的docker上加速

[英]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守護程序的替代選項,以查看哪種方法最有效。

  • 永遠不要在循環模式下使用devicemapper! --storage-driver==devicemapper \\ --storage-opt dm.loop*
  • --storage-driver==aufs
  • OverlayFS --storage-driver==overlay2overlay在4.x之前的內核上。
  • 直接--storage-driver==devicemapper \\ --storage-opt dm.datadev=/dev/dockervg/datalv \\ --storage-opt dm.metadatadev=/dev/dockervg/metadatalv
    這也需要一些lvm設置。

對每個驅動程序進行測試。
每次交換時,您的容器數據將被銷毀。
然后使用最佳驅動程序。

如果選擇該選項,則掛載本地卷可能是最快的,然后處理存儲在容器外部的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM