97色精品视频在线观看免费,日韩欧美亚洲每日更新网,国产精品色婷婷99久久精品,99e热久久免费精品首页

驚!Rsync 文件同步竟遭遇失敗?手把手教你排查,告別同步煩惱!

2024-11-08 14:11:38 Jinyu

問題

rsync客戶端:拋錯異常退出

發布失敗截圖如下:

圖片

看報錯信息應該是 rsync 同步文件失敗,并非 salt 問題,為確認這點,我們登錄 salt-master,手工執行 rsync 命令,確實無返回,排除 salt 及 salt-api 問題。
登錄同步異常服務器,手工執行 rsync 同步命令,可以復現:








# rsync -avz --delete --exclude='.git' --exclude='.svn' rsync://<rsync_srv>:<rsync_port>/path/to/folder /tmp/rsync-testreceiving incremental file list...rsync: read error: Connection reset by peer (104)rsync error: error in rsync protocol data stream (code 12) at io.c(759) [receiver=3.0.6]rsync: connection unexpectedly closed (99 bytes received so far) [generator]rsync error: error in rsync protocol data stream (code 12) at io.c(600) [generator=3.0.6]

rsync客戶端:進程僵死

周四反饋發布失敗的同學情況又不一樣了,發布并未拋明顯異常,但是進度條卡住一直無返回,查詢 salt-master 日志后,rsync 命令成功下發,但確實無結果返回,懷疑服務器執行 rsync 命令失敗,進程僵死,手工上服務器執行了把,確實如此,只有當手工終止 rsync 命令后(ctrl+c),才拋異常信息:










# rsync -avzP --delete--exclude='.git' --exclude='.svn' rsync://<rsync_srv>:<rsync_port>/path/to/folder /tmp/rsync-testPassword: receiving incremental file list./<rsync-test-pkg>-SNAPSHOT.jar^Crsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(551) [generator=3.0.9]
rsync error: received SIGUSR1 (code 19) at main.c(1298) [receiver=3.0.9]

執行第二,甚至第三次時,才成功:










# rsync -avzP --delete--exclude='.git' --exclude='.svn' rsync://<rsync_srv>:<rsync_port>/path/to/folder /tmp/rsync-testPassword: receiving incremental file list./<rsync-test-pkg>-SNAPSHOT.jar60606801 100% 16.13MB/s0:00:03 (xfer#1, to-check=0/3)
sent 21035 bytesreceived 43167123 bytes5758421.07 bytes/sectotal size is 60607326speedup is 1.40

網上搜了下,發現已經有人發現 rsync 類似問題了,引用其博客:

盡管您可能已經在rsyncd服務的后端進程中設置了--timeout選項(即在rsyncd.conf配置中),然而,在某些情況下(under the circumstances),這個選項可能根本不起作用,一些極不穩定的網絡導致大量TCP超時連接,進而導致 rsync 進程失敗,雖然斷裂的 TCP 連線已經消失,但 rsync 應用進程卻可能因為種種原因(如因等候I/O中斷而處于不可中斷狀態),而遺留在系統之中,并最終變成為僵尸進程(zombie process)。

按照其手冊頁的解釋,rsync 命令本身的 timeout 預設為0,也就是沒有逾時設置,因此運行中的 rsync 進程將會永久地等待遠端的反應。在rsyncd服務后端進程的 rsyncd.conf中設置timeout選項,同時在rsync客戶端命令行中使用timeout選項,實踐證明是可杜絕此問題的。

于是在服務器上添加 --timeout 參數,再次執行后確實能夠異常退出了:

# rsync -avzP --timeout=60 --delete--exclude='.git' --exclude='.svn' rsync://<rsync_srv>:<rsync_port>/path/to/folder /tmp/rsync-testPassword: receiving incremental file list./<rsync-test-pkg>-SNAPSHOT.jar2011425333% 19.18MB/s0:00:02[receiver] io timeout after 60 seconds -- exitingrsync error: timeout in data send/receive (code 30) at io.c(140) [receiver=3.0.9]rsync: connection unexpectedly closed (115 bytes received so far) [generator]rsync error: error in rsync protocol data stream (code 12) at io.c(605) [generator=3.0.9]

rsync服務端:異常日志

懷疑過是不是rsync服務端問題,重啟過服務端rsync服務,問題依然存在;換過rsync服務端,問題依然存在,由此可以排除服務端問題。
但無論客戶端拋哪種問題,服務端均能捕捉到,并輸出相應日志:







2018/10/26 14:40:30 [4228] name lookup failed for <rsync-client>: Name or service not known2018/10/26 14:40:30 [4228] connect from UNKNOWN (<rsync-client>)2018/10/26 14:40:30 [4228] rsync on path/to/folder from UNKNOWN (<rsync-client>)2018/10/26 14:40:30 [4228] building file list2018/10/26 14:40:35 [4228] rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Connection timed out (110)2018/10/26 14:40:35 [4228] rsync error: error in rsync protocol data stream (code 12) at io.c(1525) [sender=3.0.6]

rsync客戶端:strace排查

通過 strace 來跟蹤 rsync 進程執行時的系統調用和所接收的信號,但未發現系統級明顯異常:

lstat("<rsync-test-pkg>-SNAPSHOT.jar", 0x7fff7d6e0000) = -1 ENOENT (No such file or directory)select(5, [4], [3], [3], {30, 0}) = 2 (in [4], out [3], left {29, 999998})select(5, [4], [], NULL, {30, 0}) = 1 (in [4], left {29, 999999})read(4, "

主站蜘蛛池模板:
仪征市|
天台县|
五大连池市|
银川市|
秦安县|
罗江县|
安西县|
旺苍县|
峡江县|
翁牛特旗|
元氏县|
雅江县|
内乡县|
平泉县|
鹤壁市|
托克逊县|
城步|
重庆市|
奉贤区|
澄江县|
常州市|
周至县|
镶黄旗|
合山市|
法库县|
泌阳县|
芒康县|
珲春市|
灵宝市|
龙井市|
汕尾市|
哈巴河县|
扎赉特旗|
焦作市|
潼南县|
佛坪县|
襄垣县|
穆棱市|
永兴县|
桐柏县|
阳西县|