V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hengo
V2EX  ›  问与答

不懂就问, Docker 大神请进!

  •  
  •   hengo · 2020-07-09 19:02:43 +08:00 · 1691 次点击
    这是一个创建于 1358 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关于 Docker 的 CPU 占用率的问题

    事情是这样的这边因为'Oracle'数据量比较大,几十万的数据,然后用的批量从数据库 A -> 数据库 B,异步多线程循环每次插入 1000 条数据,程序代码会卡死,每次只能循环插入 100 条数据(这样不会才不会卡死),使用'docker stats'查看了一下 Oracle 的 CPU 占用率,已经达到了'100%'。但是在主机上使用'top'命令,CPU 的占用率才'25%'左右。

    1. 照理来说,Oracle 一次性插入几千条数据,都不应该是这样的情况。而目前插入 1000 条就卡了。
    2. 我看到博客里面,一般都是去调整多个 CPU 的使用权重,对于我这种情况怎么去调整 Docker 的 CPU 使用率,才能让它占有服务器主机的 CPU 的全部性能?

    下面附上:主机的 TOP 截图和 Docker 容器的 CPU 占用截图

    另外,直接用 Oracle GUI 工具直接插入一万条,GUI 工具也会卡,而且 Docker stats 查看 Oracle 的 CPU 占用率也达到了 100%

    11 条回复    2020-07-10 11:09:49 +08:00
    Jirajine
        1
    Jirajine  
       2020-07-09 19:09:38 +08:00 via Android
    GM
        2
    GM  
       2020-07-09 19:11:24 +08:00
    你是不是用了默认的存储,那个东西 IO 性能很差,会导致所有读写磁盘的操作很慢,比如往数据库里插数据。
    hengo
        3
    hengo  
    OP
       2020-07-09 19:12:13 +08:00 via iPhone
    @Jirajine 嗯,那我这个大概是什么原因呢?是因为安装的 Oracle 容器有问题吗?
    ashong
        4
    ashong  
       2020-07-09 19:21:17 +08:00
    存储位置不会在容器内吧
    Jirajine
        5
    Jirajine  
       2020-07-09 19:25:13 +08:00 via Android
    @hengo 所以限制(如果有)是用户加的,你 inpsect 看一下啊。
    ypcs03
        6
    ypcs03  
       2020-07-09 19:59:32 +08:00
    可能跟你 cpu 多核有关
    hengo
        7
    hengo  
    OP
       2020-07-09 20:31:52 +08:00 via iPhone
    决定安装一个 Linux 本地的 Oracle 试试,现在只能通过这个进行排查到底是什么原因了?
    hyperbin
        8
    hyperbin  
       2020-07-10 08:16:14 +08:00 via Android
    数据库不适合容器化,有状态的服务都不适合
    mritd
        9
    mritd  
       2020-07-10 09:06:40 +08:00 via iPhone
    所以你根本没说你用的什么镜像,据我所知 oracle 官方在 docker hub 上的是给你测试得,本身就有限制
    hengo
        10
    hengo  
    OP
       2020-07-10 10:55:43 +08:00 via iPhone
    @mritd 现在初步怀疑,我用的 mybatis 批量插入,这效率很低,容易把 CPU 拉满。
    dolphintwo
        11
    dolphintwo  
       2020-07-10 11:09:49 +08:00
    默默想纠正你一下,看你四核的机器,其实 docker stats 可以看到的 cpu 最大值应该是 400%,和 top 计算方法不一致,所以两边显示一样。so....瓶颈不在 cpu,也不存在 limit,默认都是放开的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3455 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:12 · PVG 19:12 · LAX 04:12 · JFK 07:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.