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 -av /srv .
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を実行しているときはいつでもカウントアップします。
より多くのファイルがある場合、rsyncはより多くのメモリを消費します。
ファイルを別々のフォルダーに分割してrsyncするか、ソースの場所にある10,000個のファイルすべてをTARし、10000.tarをvpsにrsyncしてからuntarします。
この問題が最新バージョン(3.1)で解決されているかどうかはわかりませんが、以前のバージョンの問題でした。