हम नियमित रूप से रिमोट फ़िशिकल साइट्स पर इंटरैक्टिव कियोस्क सीपीयू को तैनात करते हैं, और मैंने एक सामग्री अद्यतनकर्ता एप्लिकेशन विकसित किया है जो प्रत्येक कियोस्क (विंडोज 7 प्रो) के बीच मीडिया संपत्तियों की रात की सिंक करता है और एक होस्टेड सीएमएस (वर्चुअलाइज्ड उबंटू सर्वर linode.com पर चल रहा है)। सामग्री अद्यतनकर्ता सी #/.NET में लिखा गया है, और यह Process.Start() का उपयोग कर एक बच्चे यूनिसन प्रक्रिया को जन्म देता है। यूनिसेन को एक निजी कुंजी का उपयोग कर एसएसएच के माध्यम से रिमोट सर्वर से कनेक्ट करने के लिए कॉन्फ़िगर किया गया है।विंडोज/लिनक्स के बीच यूनिसेन सिंक स्थानांतरण के दौरान यादृच्छिक रूप से लटकता है
हम जिस मुद्दे पर हमला कर रहे हैं वह यह है कि जब ContentUpdater.exe से बाल प्रक्रिया के रूप में उत्पन्न होता है, तो यूनिसन अक्सर स्थानांतरण के दौरान रिमोट सर्वर से संचार करना बंद कर देगा और अनिश्चित काल तक लटकाएगा। कोई साधारण repro नहीं है - कभी-कभी यह काम करता है, अक्सर यह लटका नहीं है। यह बड़े अपडेट (400 एमबी +) पर अधिक नाजुक प्रतीत होता है लेकिन यह किसी और चीज की तुलना में अधिक अनुमान है। जब यह लटकता है, क्लाइंट (विंडोज 7) पर यूनिसन प्रक्रिया अभी भी 25% सीपीयू उपयोग दिखा रही है, और सर्वर भी एकजुट प्रक्रिया को दिखाता है - बस कोई नेटवर्क गतिविधि नहीं है। मुझे पता है कि यह कनेक्ट हो रहा है, क्योंकि यह हमेशा प्रक्रिया शुरू करता है और स्थानांतरण के माध्यम से भाग लेता है, लेकिन यह दो बार एक ही स्थान पर कभी नहीं लटकता है। मैं यूनिसेन-2.40.63.exe का मूल विंडोज बाइनरी बिल्ड चला रहा हूं, और रिमोट सर्वर पर एकजुट का एक ही संस्करण चला रहा हूं।
विंडोज पर यूनिसन कमांड लाइन लगता है:
Unison-2.40.63.exe -contactquietly -silent -batch -sshcmd "C:\KioskManagement\Apps\ssh2plink.bat" -sshargs "-p 22 -i C:\cygwin\home\someuser\.ssh\contentupdater-rsync-key.ppk" -ignore "Path {innovations,todaytomorrow,scale,mooreslaw,brilliantminds,askafab}" ssh://[email protected]//home/cms/base-preview/webapps/ROOT/applications C:\kioskdir\temp\applications -force ssh://[email protected]//home/cms/base-preview/webapps/ROOT/applications
रिकॉर्ड के लिए, मैं मूल रूप से सामग्री अपडेटर लेखक था (cygwin के माध्यम से Windows पर) rsync उपयोग करने के लिए, लेकिन एक ही मुद्दों मार दिया गया था। यह देखने के लिए कि क्या एसएसएच परिवहन समस्या का हिस्सा था, मैं tried using rsync in server mode (rsyncd) लेकिन लटकाना अपने सिर को पीछे छोड़ना जारी रखता था।
इस बिंदु पर, मैं पूरी तरह से स्टंप हो गया हूं। मुद्दा अन्य सर्वरों पर भी repros, इसलिए मैं सोच रहा हूँ कि यह चीजों के विंडोज पक्ष पर है। मैं यह भी मानने के इच्छुक हूं कि समस्या तब होती है जब प्रक्रिया किसी अन्य प्रक्रिया के अंदर Process.Start() से यूनिसन/rsync को कॉल करते हैं (अद्यतन: मुझे कमांड लाइन से चलते समय इसे फिर से लिखना पड़ता है) - ऐसा प्रतीत नहीं होता है कमांड लाइन से सीधे चलते समय असफल हो जाते हैं। यूनिसन/rsync भी कभी भी त्रुटि नहीं करता है, इसलिए जांचने के लिए कोई लॉगफाइल नहीं है (जब तक कि किसी को रिमोट सर्वर पर सर्वर-साइड ट्रेस या लॉगफाइल के बारे में पता नहीं है - पूर्ण प्रकटीकरण: मैं एक फ्रीबीएसडी गीक हूं, और जानता हूं हुड के नीचे उबंटू के बारे में कीमती छोटी)।
किसी भी और सभी अंतर्दृष्टि/विचार/समाधान के लिए अग्रिम धन्यवाद!
सर्वश्रेष्ठ
यह एक उत्तर नहीं प्रतीत होता है। –