gpt4 book ai didi

java - i/o 密集型 java 应用程序在 docker 上以有限的资源加速

转载 作者:行者123 更新时间:2023-11-28 21:26:45 25 4
gpt4 key购买 nike

我有一个 I/O 密集型 java tomcat 应用程序,我想在更现代的集群环境中执行 htmlunit-tests。因此,我还考虑了 docker,它可以通过应用 swarm 等提供很酷的功能。

测试针对 oracle 数据库运行,并在本地 I/O 上创建流量。我只是好奇一个问题:

当我使用有限资源(负载 15 因子在 1 CPU 系统上超过 2)的简单安装运行测试时,测试执行时间比在相同环境(有限资源)上使用测试执行的 jetty 化方法。如果有足够的资源将负载因子保持在 1 以下(在 1 CPU 系统上),则普通安装和 dockerized 安装之间的运行时间几乎相同。

我正在寻找解释这一点的方法。是关于一些覆盖文件系统缓存机制吗?调查此问题时该看哪里?

最佳答案

该答案非常针对您的应用程序,因此您所能做的就是测试各种 docker 存储设置。

首先,使用 local data volume 测试应用程序. local volumemounting a local directory as a volume .这消除了大部分开销,并且应该尽可能接近主机 IO 速度。

如果您的应用程序全速运行,则可能是 docker storage driver是罪魁祸首,因此您可以尝试 docker 守护进程的替代选项,看看哪个最有效。

  • 永远不要在循环模式下使用 devicemapper! --storage-driver==devicemapper\
    --storage-opt dm.loop*
  • AUFS --storage-driver==aufs
  • OverlayFS --storage-driver==overlay2overlay 在 4.x 之前的内核上。
  • 直接 LVM--storage-driver==devicemapper\
    --storage-opt dm.datadev=/dev/dockervg/datalv\
    --storage-opt dm.metadatadev=/dev/dockervg/metadatalv

    这也需要一些 lvm 设置。

测试每个驱动程序。
每次交换时,您的容器数据都会被销毁。
然后使用最好的驱动程序。

挂载本地卷可能是最快的,如果您选择这样做,那么您将处理存储在容器外部的数据。

关于java - i/o 密集型 java 应用程序在 docker 上以有限的资源加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38562378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com