web-dev-qa-db-ja.com

Rsyncのメモリが不足しています

512MBのRAMを搭載したVPS(Debianを実行)を使用しています。 rsyncを使用してサーバー上でローカルにファイルをコピーしようとしていますが、次のメッセージですぐに失敗します。

rsync: writefd_unbuffered failed to write 5 bytes to socket [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (13505 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]

たった113MBのファイル(そのうちの10.000)です。しかし、それらすべてのファイルに到達するずっと前に失敗します。

これは利用可能なメモリが限られているためだと思いますが、私は十分なはずですか?これを回避する方法はありますか? rsyncにファイルをメモリスタックとして使用させることはできますか?

リクエストに応じて更新

rsyncコマンド

rsync -av /srv .

ulimit -a

nine@www:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

自由

nine@www:~$ free
             total       used       free     shared    buffers     cached
Mem:        524288     231104     293184          0          0          0
-/+ buffers/cache:     231104     293184
Swap:            0          0          0

スワップはおそらく役立つでしょう。問題は、私のVPSがそれを追加することをサポートしていないと思うことです。

スワップしてみてください

nine@www:~$ Sudo swapon /home/nine/swap.file 
swapon: /home/nine/swap.file: swapon failed: Operation not allowed

なぜそれがメモリの問題だと思うのか

なぜそれがメモリの問題だと思うのかという質問を受けました。それは私のVPSのコントロールパネルが私に言うことのためです。次のようなマシンのエラーを示す表があります。

resourcetype    held    maxheld     limit           failcnt
numiptent       24  24      800             0
numfile         1612    2324        4200            0
dcachesize      440391  547046      20480000        0
numothersock    104     139     6000            0
dgramrcvbuf     0   17224       262144000       0
othersockbuf    172272  442048      262144000       0
tcprcvbuf       114688  4962176     262144000       0
tcpsndbuf       122528  2177672     262144000       0
numsiginfo      0   3       256             0
numpty      1   3       32          0
numflock        6   13      4120            0
numtcpsock      7   34      6000            0
oomguarpages    14029   23497       131072          0
vmguarpages     0   0       131072          0
physpages       14029   23497       9223372036854776000     0
numproc         102     142         4000            0
shmpages        697     1993        512000          0
privvmpages     57818   131075      131072          51
lockedpages     0   0       8192            0
kmemsize        5566036 7796832     117760000       0

Privvmagesの失敗数を監視します。これは、メモリがバースト制限を超えたときに表示されると思います。これは、rsyncを実行しているときはいつでもカウントアップします。

3
Niclas Nilsson

より多くのファイルがある場合、rsyncはより多くのメモリを消費します。

ファイルを別々のフォルダーに分割してrsyncするか、ソースの場所にある10,000個のファイルすべてをTARし、10000.tarをvpsにrsyncしてからuntarします。

この問題が最新バージョン(3.1)で解決されているかどうかはわかりませんが、以前のバージョンの問題でした。

2
Mukunth