
Estoy usando inotify para ver un directorio y sincronizar archivos entre servidores usando rsync. La sincronización funciona perfectamente y el uso de la memoria prácticamente no es un problema. Sin embargo, recientemente se agregó una gran cantidad de archivos (350k) y esto afectó el rendimiento, específicamente en la CPU. Ahora, cuando se ejecuta rsync, el uso de la CPU aumenta al 90%/100% y rsync tarda mucho en completarse, hay 650k archivos en observación/sincronización.
¿Hay alguna forma de acelerar rsync y solo rsync el directorio que se ha cambiado? O, alternativamente, configurar múltiples inotifywaits en directorios separados. El script que se utiliza se encuentra a continuación.
ACTUALIZACIÓN: Agregué el indicador --update y el uso parece prácticamente sin cambios
#! /bin/bash
EVENTS="CREATE,DELETE,MODIFY,MOVED_FROM,MOVED_TO"
inotifywait -e "$EVENTS" -m -r --format '%:e %f' /var/www/ --exclude '/var/www/.*cache.*' | (
WAITING="";
while true; do
LINE="";
read -t 1 LINE;
if test -z "$LINE"; then
if test ! -z "$WAITING"; then
echo "CHANGE";
WAITING="";
rsync --update -alvzr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/
fi;
else
WAITING=1;
fi;
done)
Respuesta1
Terminé eliminando la opción de compresión (z) y aumentando la var de ESPERA a 10 (segundos). Esto parece haber ayudado, rsync todavía aumenta la carga de la CPU pero dura menos. El crédito va a una respuesta enintercambio de pila unix
Respuesta2
También podrías investigarlsyncdque tiene más opciones. Puede usar secuencias de comandos lua, para luego decir cuántos procesos simultáneos necesita usar y tal vez más cosas que puedan ser de interés.
Esto también usa rsync e ionotify.
Respuesta3
También puedes considerar desactivar la compresión SSH y utilizar un algoritmo de cifrado menos exigente, por ejemplo:
rsync -e "ssh -c arcfour -x -o Compresión=no" ....
Otra medida puede ser configurar explícitamente su túnel ssh. Sin embargo, necesitas configurar un demonio Rsync para ese propósito. Consulte el script de shell en nuestroPreguntas más frecuentes. También debería ser utilizable para su caso.