不懂就问, Docker 大神请进!

2020-07-09 19:02:43 +08:00
 hengo

关于 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%

1787 次点击
所在节点    问与答
11 条回复
Jirajine
2020-07-09 19:09:38 +08:00
GM
2020-07-09 19:11:24 +08:00
你是不是用了默认的存储,那个东西 IO 性能很差,会导致所有读写磁盘的操作很慢,比如往数据库里插数据。
hengo
2020-07-09 19:12:13 +08:00
@Jirajine 嗯,那我这个大概是什么原因呢?是因为安装的 Oracle 容器有问题吗?
ashong
2020-07-09 19:21:17 +08:00
存储位置不会在容器内吧
Jirajine
2020-07-09 19:25:13 +08:00
@hengo 所以限制(如果有)是用户加的,你 inpsect 看一下啊。
ypcs03
2020-07-09 19:59:32 +08:00
可能跟你 cpu 多核有关
hengo
2020-07-09 20:31:52 +08:00
决定安装一个 Linux 本地的 Oracle 试试,现在只能通过这个进行排查到底是什么原因了?
hyperbin
2020-07-10 08:16:14 +08:00
数据库不适合容器化,有状态的服务都不适合
mritd
2020-07-10 09:06:40 +08:00
所以你根本没说你用的什么镜像,据我所知 oracle 官方在 docker hub 上的是给你测试得,本身就有限制
hengo
2020-07-10 10:55:43 +08:00
@mritd 现在初步怀疑,我用的 mybatis 批量插入,这效率很低,容易把 CPU 拉满。
dolphintwo
2020-07-10 11:09:49 +08:00
默默想纠正你一下,看你四核的机器,其实 docker stats 可以看到的 cpu 最大值应该是 400%,和 top 计算方法不一致,所以两边显示一样。so....瓶颈不在 cpu,也不存在 limit,默认都是放开的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688642

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX