Uzak makinede güzel rsync


25

Uzaktaki bir makineye erişmek için rsync + ssh kullanırken, uzaktaki makinedeki rsync işlemini "güzel" hale getirmenin bir yolu var mı (önceliğini düşürmek)?

Sorunu netleştirmek için düzenleme:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(rsync hattı kesildi)

Bu normalde sabah saat 4'te çalışan bir yedekleme cron işidir, ancak uyanık olduğumda (ve aynı makinede barındırılan Bugzilla'yı kullandığımda), sunucu performansını düşürür, bu yüzden hızlı bir "kesmek" istedim ve düzeltmek istedim biraz.

Yanıtlar:


35

Bu --rsync-pathseçeneği kullanabilirsiniz , örneğin.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

15
Ionice'i de kullanmayı düşünebilirsiniz , örneğin --rsync-path="ionice -c 3 nice rsync", modern Linux'lar iyi niyetli işlemler için IO önceliğini otomatik olarak azaltsa da (bağlantılı olduğum kılavuz sayfasına bakın).
Jo Liss

Bunu çoktan denedim, ama sshd'im hala çalışıyornice 0
Felipe Alvarez

sahip olmadığınız FreeBSD benzeri sistemlerde ionice, --bwlimitseçeneği ayarlamak daha hoş bir rsync için iyidir.
deed02392

1
Ayrıca bu seçenekle ilgili herhangi bir fark yaratmayan bir sorunum var. Bağlandığım sunucunun, sadece belirttiğim --rsync-pathseçeneği geçersiz kılan belirli bir rsync komutunu kabul edecek şekilde yetkili_keylerde yapılandırıldığı ortaya çıktı .
Andy Beverley

7
  • Alarak --rsync-pathseçeneği varrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Çıkarak yapılandırma dosyası seçeneği dosyasında değiştirebilirsiniz veya yorumsuz değer ve değer/etc/default/rsyncRSYNC_NICE='17'RSYNC_IONICE='-c3'

Her iki iyon için de sabit disk önceliği olacaktır

  • 1 -> Gerçek zamanlı
  • 2 -> En iyi çaba
  • 3 -> Ildle (başka bir işlem HD'yi kullanmadığında)

Yalnızca Linux için cfqzamanlayıcının gerçekten GÇ sınıflarını ve önceliklerini uyguladığını unutmayın . Uzak sistem yöneticisi IO zamanlayıcı tercih ettiyse noop, deadlineya da bazı daha egzotik varyant sen bulabilirsiniz ionicegerçekten hiçbir şey yapmaz. Biri cfq'yi doğru ayarlayarakcfq IO sınıflarından ve önceliklerinden faydalanabilmeli ve yine de IO sınıflarını ve önceliklerini kullanabilmelidir .

İşlemci önceliği için iyi değer için

  • -20 (sürece en uygun)
  • (varsayılan 10) -n belirtilmezse
  • 19 (en azından süreç için uygun)

Kim sorumlu /etc/default/rsync? Rsync'in kendisi bu dosyayı okuyor mu, yoksa bu linux-flavor / distribution tarafından mı yapılıyor?
guettli

... Ben çözüm /etc/default/rsyncrsync daemon modu için varsayılan dosya olduğunu düşünüyorum . Sanırım sadece rsync daemon'a rsync-protokolü ile bağlanırsanız geçerlidir. Sanırım ssh ile çağırırsan, geçerli olmaz.
guettli

2

Çabuk ve kirli çözüm, rsync adında gerçek $ rsync ikiliden önce $ PATH'i gölgeleyen 'rsync' adında küçük bir sarmalayıcı komut dosyası oluşturmak olacaktır:

#!/bin/sh
nice -10 /path/to/proper/rsync $*

Ya da yetkili_keys dosyasını rsync'in çalışmasını sağlayacak şekilde ayarlayın. (Ssh anahtarlarını kullandığınızı varsayarsak).

örnek:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

Şimdi /home/user/bin/nice-rsync.sh adresinde

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

HTH


2

İşlem boyunca -zher iki tarafta da biraz zaman kazandırabilecek argümanı dahil etmeden ağdaki sıkıştırmayı devre dışı bırakabilirsiniz . Veya rsync'in sağlama toplamlarını nasıl kullandığını değiştirin,--checksum


Hasturkun'un cevabını kabul ettim (sorumu cevapladığından beri), ancak iyi bir noktaya değindiniz: Sıkıştırma olmadan sıkıştırma ile kıyaslama yaptım ve işe sadece 2 dakika ekledi. Ben sadece -avz'ı bayraklarım olarak kullanmaya alıştım, asla -z düşürmeyi düşünmedim.
duvar kağıdı

Alışkanlığım -aPh kullanmak, nadiren -z kullanmak
Rory

0

Rsync, fazla CPU kullanmamalı. Diğer taraftan belli bir kibarlığı zorlayabileceğinden şüpheliyim, ancak yapabileceğin şey, rsync'in güvenlik duvarı ile kullandığı bant genişliğini sınırlamak, ki bu da X zamanında ne kadar işlem yapabileceğini azaltacaktır.


CPU kadar ne yaptığını göstermek için 'ps aux' den bir çıktı eklendi. Yavaş bir bağlantı üzerinden gidiyorum, bu yüzden - sıkıştırma seçeneği açık, ancak aynı zamanda iyi (istenmeyen yan etki) kullanarak
çökmeyi umduğum

İyi bir değer belirlemek genellikle birisinin genellikle istediği G / Ç güzelliğini de etkiler.
Bram Schoenmakers

rsyncfazla CPU gerektirmez ancak topyine de mevcut çekirdeğin G / Ç'nin meşgul olarak beklediğini düşünmesine bağlı olarak görünebilir . Ayrıca, başka bir işlem depolamaya erişmesi gerekiyorsa ve rsynctam hızda çalışmasına izin verilirse, diğer tüm işlemler bunun sonucunda yavaşlar.
Mikko Rantalainen

-7

Sanmıyorum, bunun için özel bir çözüme ihtiyacınız var .. use ftp


6
Bilirsin, bu iyi bir fikir. Uzak makinede çalışan bir servete ihtiyaç duymadan ssh ile çalışabilmek gibi rsync'in tüm özelliklerine ihtiyaç duyan (ve ssh'ın doğal şifrelemesi), sıkıştırma aktarma, indirme işlemine devam etme, yalnızca farkları aktarma ... kabartmak. Şu an eve koşacağım ve PS / 2 Sistem 60'ımı FTP'ye anime olarak kullanacağım!
24’te

Lütfen bu cevabı, soruyu cevaplayamadığından ve sorudaki örnekten önemli ölçüde daha kötü bir alternatif sunduğundan silin.
user1133275,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.