事情是这样的这边因为'Oracle'数据量比较大,几十万的数据,然后用的批量从数据库 A -> 数据库 B,异步多线程循环每次插入 1000 条数据,程序代码会卡死,每次只能循环插入 100 条数据(这样不会才不会卡死),使用'docker stats'查看了一下 Oracle 的 CPU 占用率,已经达到了'100%'。但是在主机上使用'top'命令,CPU 的占用率才'25%'左右。
下面附上:主机的 TOP 截图和 Docker 容器的 CPU 占用截图
另外,直接用 Oracle GUI 工具直接插入一万条,GUI 工具也会卡,而且 Docker stats 查看 Oracle 的 CPU 占用率也达到了 100%
1
Jirajine 2020-07-09 19:09:38 +08:00 via Android
|
2
GM 2020-07-09 19:11:24 +08:00
你是不是用了默认的存储,那个东西 IO 性能很差,会导致所有读写磁盘的操作很慢,比如往数据库里插数据。
|
4
ashong 2020-07-09 19:21:17 +08:00
存储位置不会在容器内吧
|
6
ypcs03 2020-07-09 19:59:32 +08:00
可能跟你 cpu 多核有关
|
7
hengo OP 决定安装一个 Linux 本地的 Oracle 试试,现在只能通过这个进行排查到底是什么原因了?
|
8
hyperbin 2020-07-10 08:16:14 +08:00 via Android
数据库不适合容器化,有状态的服务都不适合
|
9
mritd 2020-07-10 09:06:40 +08:00 via iPhone
所以你根本没说你用的什么镜像,据我所知 oracle 官方在 docker hub 上的是给你测试得,本身就有限制
|
11
dolphintwo 2020-07-10 11:09:49 +08:00
默默想纠正你一下,看你四核的机器,其实 docker stats 可以看到的 cpu 最大值应该是 400%,和 top 计算方法不一致,所以两边显示一样。so....瓶颈不在 cpu,也不存在 limit,默认都是放开的
|