सवाल Gsutil rsync पर धीमी सिंक्रनाइज़ेशन चरण?


मैंने अपने वेब सर्वर के लिए बैकअप के रूप में जीसीएस का उपयोग करना शुरू कर दिया है। एक सर्वर में 1.2 मिलियन जेपीईजीएस (3.5 टीबी) है और यह सब 10 घंटे या उससे अधिक समय तक बिना किसी तरह से rsynced।

दूसरे में 2.5 मिलियन जेपीईजीएस है (केवल थंबनेल / पूर्वावलोकन हालांकि - 300 जीबी कुल)। पहली बार मैंने इसे "बिल्डिंग सिंक्रनाइज़ेशन स्टेट" किया था, जो कि लगभग 2.5 मिलियन से काफी जल्दी था। कुछ मिनट। हालांकि मेरा सत्र बाधित हो गया है (वाईफ़ाई गिरा दिया गया है) और जब मैंने इसे फिर से चलाने की कोशिश करने के लिए एसएसएचड किया था, तो "स्रोत सूची" प्रॉम्प्ट पर तुरंत 10000, 20000, 30000 के माध्यम से निकल जाता है। फिर निकटतम रुके तक पीस जाता है। आधे घंटे बाद यह केवल 300,000 तक है। मुझे पता है कि यह काम करना है कि गंतव्य के पास कौन सी फाइलें हैं, लेकिन मुझे नहीं लगता कि "स्रोत सूची ..." echo में काफी धीमा होना चाहिए?

क्या यह मेरे फाइल सिस्टम के साथ एक समस्या का सुझाव देता है, और यदि ऐसा है तो मुझे क्या जांचना चाहिए?

या किसी भी कारण से व्यवहार की उम्मीद है?

Gsutil rsync का उपयोग 2 मिलियन फ़ाइलों के साथ एक बाल्टी में एक बुरा विचार करने की कोशिश कर रहा है? मुझे Google से कोई दिशानिर्देश नहीं मिल सका कि बाल्टी में कितनी फाइलें बैठ सकती हैं, इसलिए मुझे लगता है कि यह अरबों / असीमित है?

FWIW फ़ाइलें सभी नेस्टेड उपनिर्देशिका में हैं, किसी भी निर्देशिका में 2000 से अधिक फ़ाइलों के साथ नहीं।

धन्यवाद

संपादित करें: मैं जिस सटीक कमांड का उपयोग कर रहा हूं वह है:

gsutil -m rsync -r /var/www/ gs://mybucketname/var/www

5
2017-10-23 08:30


मूल


क्या / var / www के नीचे प्रतीकात्मक लिंक हैं? यदि हां, तो सर्कुलर लिंक हैं? एक चीज जिसे आप कोशिश कर सकते हैं (यदि आप इसके लिए तैयार हैं) gsutil / gslib / command / rsync.py में _BuildTmpOutputLine फ़ंक्शन में लॉग कथन जोड़ रहा है, इसलिए यह संसाधित होने वाली वर्तमान फ़ाइल को प्रिंट करता है, ताकि आप देख सकें कि यह कहां है लटका हुआ है। यदि आप ऐसा करते हैं तो कृपया अपने निष्कर्षों की रिपोर्ट करें। - Mike Schwartz
कोई लिंक नहीं मैं अब यह करूँगा, धन्यवाद! - Codemonkey
खैर अब मुझे पता है कि यह प्रत्येक 32,000 वीं फ़ाइल है जो एक बड़ा विराम बनाता है। उस फ़ाइल में "buffer_size" का आकार कौन सा है। - Codemonkey
तो 32,000 प्रति पढ़ने पर हम लगभग 80 ~ 4 एमबी अस्थायी फ़ाइलों को देख रहे हैं जिनमें प्रत्येक 32,000 यूआरएल होते हैं जिन्हें एक 320 एमबी फ़ाइल में जोड़ा जाता है। ऐसा नहीं लगता है कि एक 4 एमबी temp फ़ाइल लिखना 10+ सेकंड लेना चाहिए, तो मुझे आश्चर्य है कि कुछ सुधार किया जा सकता है - Codemonkey
"output_chunk.writelines (यूनिकोड (''। join (current_chunk)))" वह रेखा है जो हर समय ले रही है। - Codemonkey


जवाब:


मैंने बदल दिया है कि बदल रहा है

output_chunk.writelines(unicode(''.join(current_chunk)))

सेवा मेरे

output_chunk.write(unicode(''.join(current_chunk)))

/gsutil/gslib/commands/rsync.py में एक बड़ा अंतर बनाता है। उनकी सहायता के लिए जीएस टीम से माइक के लिए धन्यवाद - यह सरल परिवर्तन पहले ही जिथब पर शुरू किया गया है:

https://github.com/GoogleCloudPlatform/gsutil/commit/a6dcc7aa7706bf9deea3b1d243ecf048a06a64f2


4
2017-11-03 11:58



इस समस्या को खोजने के लिए धन्यवाद - मैंने यह परिवर्तन gsutil की अगली रिलीज में किया है। - Mike Schwartz