Rsync 内存不足

Rsync 内存不足

我使用的 VPS(运行 Debian)有 512mb RAM。我尝试使用 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

观察权限失败次数,我相信这会显示内存何时超过其上限。每当我运行 rsync 时,它都会进行计数。

答案1

当文件较多时,rsync 会占用更多内存。

要么将文件拆分到单独的文件夹中并 rsync 它们,要么将源位置的所有 10,000 个文件打包成 TAR,然后将 10000.tar rsync 到您的 vps,然后解压它。

我不知道最新版本(3.1)是否解决了这个问题,但这是早期版本的一个问题。

相关内容