docker 容器启动速度慢 pg_restore
slow pg_restore on docker container startup
我有 dockerized 我的 PostgreSQL 数据库(大约 4GB 数据)。它在我的笔记本上运行良好(linux、2core CPU、SSD、8GB RAM)。我正在尝试使用 docker 集线器移动它以释放 AWS EC2 t2.micro.
容器启动时,会执行一些脚本,设置架构和表的结构,并使用 pg_restore(自定义,压缩格式)用数据填充它。在我的笔记本上大约需要 20 分钟。但是在那 t2.micro 上,它看起来可能需要数小时或数天(10 小时后集群中有 2.4GB)。
问题是,为什么它这么慢,而进程 (postgres) 没有使用太多 CPU(CPU 积分余额正在增加!)也没有一些明显的磁盘操作...导致这种缓慢进展的限制是什么?
还有日志消息:
LOG: using stale statistics instead of current ones because stats collector is not responding
我发现了 here,但我不知道是什么原因造成的...
我也在1小时后reniced进程到19,因为服务器无法使用(响应太慢),但是当我renice到0返回时,似乎没有效果。
提前致谢,J。
PS.:
似乎存在 i/o 问题...这是 iostat 的输出:
avg-cpu: %user %nice %system %iowait %steal %idle
0.23 0.45 0.26 97.54 0.66 0.87
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 90.79 33.11 1469.24 2718730 120629372
同样在顶级实用程序中,我几乎一直都可以看到该进程的状态 "D"。
肯定是i/o信用额度引起的。使用具有 limits 的小 SSD(免费层高达 30GB)时可能会出现此问题,导致满载约 30 分钟后磁盘性能非常低(不考虑 CPU 积分)。
我能够分几个阶段完全恢复数据库
- docker 运行 ...(30 分钟)
- docker 暂停(16 小时 -- 累积完整的 i/o 学分)
- docker 取消暂停...(25 分钟直到数据库恢复)。
我有 dockerized 我的 PostgreSQL 数据库(大约 4GB 数据)。它在我的笔记本上运行良好(linux、2core CPU、SSD、8GB RAM)。我正在尝试使用 docker 集线器移动它以释放 AWS EC2 t2.micro.
容器启动时,会执行一些脚本,设置架构和表的结构,并使用 pg_restore(自定义,压缩格式)用数据填充它。在我的笔记本上大约需要 20 分钟。但是在那 t2.micro 上,它看起来可能需要数小时或数天(10 小时后集群中有 2.4GB)。
问题是,为什么它这么慢,而进程 (postgres) 没有使用太多 CPU(CPU 积分余额正在增加!)也没有一些明显的磁盘操作...导致这种缓慢进展的限制是什么?
还有日志消息:
LOG: using stale statistics instead of current ones because stats collector is not responding
我发现了 here,但我不知道是什么原因造成的...
我也在1小时后reniced进程到19,因为服务器无法使用(响应太慢),但是当我renice到0返回时,似乎没有效果。
提前致谢,J。
PS.:
似乎存在 i/o 问题...这是 iostat 的输出:
avg-cpu: %user %nice %system %iowait %steal %idle
0.23 0.45 0.26 97.54 0.66 0.87
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 90.79 33.11 1469.24 2718730 120629372
同样在顶级实用程序中,我几乎一直都可以看到该进程的状态 "D"。
肯定是i/o信用额度引起的。使用具有 limits 的小 SSD(免费层高达 30GB)时可能会出现此问题,导致满载约 30 分钟后磁盘性能非常低(不考虑 CPU 积分)。
我能够分几个阶段完全恢复数据库
- docker 运行 ...(30 分钟)
- docker 暂停(16 小时 -- 累积完整的 i/o 学分)
- docker 取消暂停...(25 分钟直到数据库恢复)。