在docker容器启动时缓慢pg_restore

时间:2016-02-11 18:16:39

标签: postgresql amazon-ec2 docker pg-restore

我有dockerized我的PostgreSQL数据库(大约4GB的数据)。它在我的笔记本上工作正常(linux,2核CPU,SSD,8GB RAM)。我正在尝试使用docker hub移动它来释放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,但我不知道是什么原因引起的......

我还在一个小时到19之后再次处理过程,因为服务器无法使用(响应太慢),但是当我重新回到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”。

1 个答案:

答案 0 :(得分:0)

这绝对是由i / o信用额度造成的。使用小型SSD(免费层高达30GB)时会出现问题,其中limits在满载30分钟后会导致磁盘性能非常低(不考虑CPU积分)。

我能够分几个阶段完成DB的完全恢复

  • docker run ...(30分钟)
  • 停靠者暂停(16小时 - 累积完整的i / o积分)
  • docker unause ...(25分钟,直到DB恢复)。