2016-02-11 345 views
0

我有我的PostgreSQL DB(约4GB的数据)dockerized。它在我的笔记本上运行良好(linux,2core CPU,SSD,8GB RAM)。我正在尝试使用Docker集线器来移动它以释放AWS EC2 t2.micro。docker容器启动缓慢pg_restore

容器启动时,会执行一些脚本,这些脚本会设置架构和表格的结构,并使用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,但我不知道是什么原因导致这种...

我也reniced过程中的一些一小时后到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”。

+0

PS2: 我已经大概花了I/O学分,这是不容易的,现在监控... https://forums.aws.amazon.com/thread.jspa?threadID=164462&start=0&tstart = 0 – jurafejfar

回答

0

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

我分几个阶段能够进行全DB的恢复

  • 泊坞窗运行...(30分钟)
  • 泊坞窗暂停(16小时 - 积累全I/O学分)
  • 码头停留...(25分钟直到DB恢复)。