Rsync из памяти

1964
Niclas Nilsson

Я использую VPS (запущенный Debian) с 512 Мб оперативной памяти. Я пытаюсь скопировать некоторый файл локально на сервере с помощью 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] 

Это всего 113 МБ файлов (из них 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
Не могли бы вы добавить команду `rsync`, которую вы используете, вывод` ulimit -a` и есть ли у вас какие-либо настройки подкачки (`free`) Paul 11 лет назад 1
@Paul: Да, готово :) Niclas Nilsson 11 лет назад 0
Зачем вам нужна поддержка для добавления свопа (что, вероятно, поможет)? Хотя я не буду делать это в долгосрочной перспективе, вы можете создать и включить файл подкачки со строкой "dd if = / dev / zero of = / path / to / swap.file bs = 1M count = 512; mkswap / path / to /swap.file; swapon /path/to/swap.file "из shellprompt. (это сделает файл подкачки в 512 мегабайт, параметр count увеличит или уменьшит этот показатель) davidgo 11 лет назад 0
Хм. Выглядит довольно стандартно с ограничениями, и 10000 файлов должны быть только около 1 МБ, поэтому есть память. Оба каталога находятся на локальной машине? Как говорит @davidgo, вы можете довольно легко настроить своп с помощью файла подкачки, так что стоит попробовать. Paul 11 лет назад 0
На самом деле, почему вы думаете, что проблема в памяти? (Хотя лучше всего поменять местами, ничто в вашем посте не подразумевает проблемы с памятью) davidgo 11 лет назад 0
@davidgo: я обновил свой вопрос, чтобы показать, почему я думаю, что это проблема с памятью и почему своп не работает. Niclas Nilsson 11 лет назад 0
Хорошо. Извините, я не могу помочь с виртуальными машинами opvnVZ / Virtuozzo - у меня есть только опыт полной виртуализации. С точки зрения Google это, по-видимому, является ограничением вашей среды виртуализации - если честно, я нашел ее поразительной. (Если я куплю виртуальную машину, я ожидаю, что смогу делать с ней то, что хочу). Я бы задал вопрос вашему хосту о том, почему ваша система сообщает о свободной памяти, но вы не можете сделать что-то относительно простое - и посмотрите на переход к поставщику виртуальных машин, который не мешает вам использовать своп. davidgo 11 лет назад 0
Хорошо. Если я хочу поставщика в своей стране (что, конечно, не нужно), у него хорошая репутация, и он довольно дешев для нашей некоммерческой организации. Но, наверное, мне придется переосмыслить это. Niclas Nilsson 11 лет назад 0

1 ответ на вопрос

2
Mukunth

rsync takes more memory when there are more files.

Either split the files in separate folders and rsync them, or TAR all the 10,000 files at source location and rsync the 10000.tar to your vps and then untar it.

I don't know whether this problem is addressed in the latest version (3.1), but it was an issue with earlier versions.

Похожие вопросы