2016-02-11 121 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恢復)。