在 Docker 容器启动时pg_restore缓慢



我已经docker化了我的PostgreSQL DB(大约4GB的数据(。它在我的笔记本电脑(linux,2核CPU,SSD,8GB RAM(上运行良好。我正在尝试使用 docker hub 移动它以释放 AWS EC2 t2.micro。

在容器启动时,会执行一些脚本,这些脚本设置架构和表的结构,并使用pg_restore(自定义压缩格式(填充数据。在我的笔记本上大约需要 20 分钟。但是在 t2.micro 上,看起来可能需要数小时或数天(2.4 小时后集群中有 10GB(。

问题是,为什么它这么慢,而进程(postgres(没有使用太多的CPU(CPU积分余额正在增加!(也没有一些明显的光盘操作......导致这种缓慢进展的限制是什么?

还有日志消息:

LOG: using stale statistics instead of current ones because stats collector is not responding

我在这里找到的,但我不知道是什么原因造成的......

我也在大约一个小时到 19 点后恢复了进程,因为服务器无法使用(响应太慢(,但是当我回复到 0 回来时,它似乎没有效果。

提前感谢,J。

附言:

似乎存在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 信用额度引起的。当使用少量 SSD(免费套餐高达 30GB(时,可能会出现此问题,这有限制,导致在满载大约 30 分钟后磁盘性能非常低(不考虑 CPU 积分(。

我能够在几个阶段执行数据库的完整还原

  • 码头工人运行...(30分钟(
  • Docker 暂停(16 小时 - 累积完整的 I/O 积分(
  • 码头工人取消暂停...(25分钟,直到数据库恢复(。

相关内容

  • 没有找到相关文章

最新更新