2008-09-15 8 views
25

हमारे पास एक बड़ा एसवीएन भंडार है। एसवीएन अपडेट करना अधिक लंबा और अधिक समय ले रहा है जितना हम कोड जोड़ते हैं। हमने svn:externals को फ़ोल्डर्स में जोड़ा जो कि विभिन्न वेबसाइटों पर FCKeditor जैसी कुछ परियोजनाओं में दोहराए गए थे। इससे मदद मिली, लेकिन इतना नहीं।मैं एसवीएन अपडेट कैसे बढ़ा सकता हूं?

अद्यतन समय को कम करने और एसवीएन गति को बढ़ावा देने का सबसे अच्छा तरीका क्या है?

+0

तुम कैसे, सर्वर की स्थापना की है आप एक सर्वर का उपयोग कर रहे हैं? यदि हां, तो कौन सा? –

उत्तर

13

यदि यह पुराना एसवीएन भंडार है (या यहां तक ​​कि काफी नया है, लेकिन ऑप्टिमाइज़ सेटअप नहीं किया गया था), तो हो सकता है कि यह रिपोजिटरी डेटाबेस की पुरानी बीडीबी शैली का उपयोग कर रहा हो। http://svn.apache.org/repos/asf/subversion/trunk/notes/fsfs में नए पर नोट्स हैं। एक से दूसरे में बदलने के लिए बहुत कठिन नहीं है - पूरे इतिहास को डंप करें, इसे फ़ाइल सिस्टम के नए svn प्रारूप के साथ पुन: प्रारंभ करें और फिर से आयात करें। यह बेकार जानकारी के पूरे चेकिन को हटाने के लिए रेपो-डंप को फ़िल्टर करने के लिए एक ही समय में उपयोगी हो सकता है (उदाहरण के लिए, मैंने 20 एमबी + टैरबॉल फ़ाइलों को हटा दिया है जिन्हें किसी ने चेक किया था)।

जहां तक ​​सामान्य गति चलती है - ओवी-आधारित कैशिंग के लिए एक गुणवत्ता (तेज़) हार्ड ड्राइव और अतिरिक्त मेमोरी एसवीएन कैसे काम करेगी इसकी गति को बढ़ाने के मामले में गलती करना मुश्किल होगा।

क्लाइंट साइड पर, यदि आपके पास बाहरी भंडार मशीन पर एसएसएच पहुंच के लिए पुट्टीएजेंट के माध्यम से tortoisesvn सेटअप है, तो आप एसएसएच संपीड़न को भी सक्षम कर सकते हैं, जो मदद भी कर सकता है।

संपादित करें: - जो खुद अलग ड्राइव स्पिंडल पर जोड़ा जा सकता है SVN v1.5 भी fsfs-reshard.py जो निर्देशिका की एक संख्या में एक FSFS आधारित SVN भंडार विभाजित मदद कर सकते हैं उपकरण है। यदि आपके पास हजारों संशोधन हैं, जो भी मदद कर सकते हैं - यदि हजारों लोगों में एक फ़ाइल ढूंढने के अलावा किसी अन्य कारण के लिए समय नहीं लगता है (और आप बताते हैं कि IOwait समय को देखकर कोई समस्या है या नहीं)

+2

reshard टूल का उपयोग न करें! मैंने इसके साथ काफी परीक्षण किया है, और यह repository down_slows करता है। आपको याद है, रिपॉजिटरी के 1.5 shards के साथ एक साधारण आयात और यह _does_ गति में सुधार। – skolima

3

लगता है जैसे आपके पास एक संग्रह में कई परियोजनाएं हैं। उन्हें उपयुक्त बनाना जहां उचित होगा आपको एक बड़ा बढ़ावा मिलेगा।

माना जाता है कि गिट सबवर्सन की तुलना में बहुत तेज़ है क्योंकि यह स्टोर/प्रक्रियाओं को बदलने के तरीके के कारण है, लेकिन मेरे पास इसका कोई पहला अनुभव नहीं है।

2

कुछ आम प्रदर्शन tweaks हैं। एसवीएन बहुत I/O भारी है, इसलिए तेज हार्ड डिस्क एक विकल्प (दोनों सिरों पर) हैं। अपने सर्वर में और मेमोरी जोड़ें। सुनिश्चित करें कि आपके क्लाइंट में डिफ्रैग्मेंटेड हार्ड डिस्क (विंडोज़ के लिए) है।

आपके द्वारा उपयोग की जाने वाली पहुंच विधि भी महत्वपूर्ण है। रिमोट फाइल सिस्टम पर संग्रहीत रेपॉजिटरीज (फ़ाइल का उपयोग करके: /// एक्सेस) या तो svnserve या apache से mod_svn के साथ बहुत धीमी होने वाली हैं। यदि आपके पास एक साधारण फ़ाइल शेयर पर रिपोजिटरी है तो बाद वाले में से किसी एक का उपयोग करने पर विचार करें।

2

सुनिश्चित करें कि सर्वर से आपका कनेक्शन तेज हो सकता है (गीगाबिट ईथरनेट)। सुनिश्चित करें कि सर्वर में सरणी में तेज़ डिस्क हैं। और, ज़ाहिर है, केवल वही जांचें जो आपको चाहिए।

4

वास्तव में कोई जवाब नहीं है, लेकिन यह जानना दिलचस्प हो सकता है कि svn ऐसा इसलिए है I/O-heavy यह तथ्य है कि यह प्रत्येक फ़ाइल की एक अतिरिक्त प्रति .svn/text-base निर्देशिका में संग्रहीत करता है । यह स्थानीय diff संचालन तेजी से बनाता है, लेकिन हार्डडिस्क अंतरिक्ष और I/O की बहुत सारी खाती है।

http://subversion.tigris.org/issues/show_bug.cgi?id=525 विवरण है।

0

यदि आपके पास कई फ़ोल्डर्स हैं भंडार की जड़ में और आपकी स्थानीय प्रति रिपोजिटरी को प्रतिबिंबित करती है, फिर मोनोलिथिक स्थानीय प्रति को कई अलग-अलग डाउनलोड करने योग्य फ़ोल्डरों में फिसलने का प्रयास करें और इन फ़ोल्डर्स को अलग से अपडेट करें, यह एक बड़े फ़ोल्डर से वास्तव में तेज़ होगा।

1

मुझे अपने अनुभव में मिला है (यानी: वास्तविक परीक्षणों के माध्यम से नहीं), विशेष रूप से यदि एसवीएन रेपो सर्वर दूरस्थ है, बाहरी का उपयोग करके चीजों को धीमा करना प्रतीत होता है। यदि आपको कई स्थानों पर डुप्लिकेट कोड (जैसे आपका एफकेसी संपादक) मिला है, तो मैं उन फ़ाइलों को सिंक्रनाइज़ और प्रबंधित करने योग्य रखने के बाद बाहरी का उपयोग करने के लिए चिपक जाता हूं, हालांकि अपडेट गति से अधिक महत्वपूर्ण है - हालांकि, आप लाने के लिए प्रतीकात्मक लिंक का उपयोग कर सकते हैं इसके बजाय डुप्लिकेट कोड में। (यदि आप Windows XP का उपयोग कर रहे हैं, तो आप junction points का उपयोग कर सकते हैं)।

1

हमने अपने कोड बेस को कई भाई मॉड्यूल में विभाजित कर दिया है और चींटी स्क्रिप्ट लिखी हैं ताकि एक डेवलपर एक समय में एक मॉड्यूल पर काम कर सके जो अन्य मॉड्यूल में क्या हो रहा है, इस बारे में बहुत परेशान किए बिना।

  • एक शीर्ष स्तर का निर्माण स्क्रिप्ट चलाता है सभी मॉड्यूल लिपियों का निर्माण
  • बाहरी पुस्तकालयों नहीं सबवर्सन में जमा हो जाती बल्कि अपाचे आइवी का उपयोग कर एक नेटवर्क ड्राइव से खींच लिया है। (इसके बारे में सोचें एक घर में मेवेन भंडार की तरह)।
  • मॉड्यूल के बीच निर्भरता भी आइवी का उपयोग करके प्रबंधित की जाती है।

आम तौर पर, डेवलपर्स को सप्ताह में दो बार अपने पूरे पेड़ को अपडेट करने की आवश्यकता होगी लेकिन इसे आसानी से दोपहर के भोजन/कॉफी ब्रेक जाने से पहले किया जा सकता है।

2

TotoiseSVN डिफ़ॉल्ट रूप से पृष्ठभूमि में फ़ाइल परिवर्तन को देखता है और मैंने देखा है कि मेरे मशीन को धीमा। मैंने सबकुछ को बाहर करने के लिए कॉन्फ़िगरेशन को बदल दिया और फिर केवल उन निर्देशिकाओं को शामिल करें जहां मेरे पास चेकआउट हैं। आप पृष्ठभूमि जांच भी बंद कर सकते हैं। इन दोनों सेटिंग्स आइकन ओवरले सेटिंग्स नोड में हैं।

9

अक्षम वायरस फ़ोल्डरों को कॉपी कोड काम शामिल है, उनकी जाँच। इससे मेरे अपडेट दो गुना तेजी से बन गए।

+0

वायरस जांच को अक्षम करने से कुछ मुद्दों को ठीक किया गया है जिन्हें मैंने अपडेट/करने के दौरान अनुभव किया था। –

1

का उपयोग करना पढ़ें-अधिकारों का उपयोग (अर्थात कुछ व्यक्तियों/समूहों तक पढ़ने की पहुंच को सीमित करने) भंडार नीचे एक बहुत धीमी हो जाएगी। विशेष रूप से जब प्रमाणीकरण कुछ विशेष तरीके से किया जाता है, उदा। विंडोज़ डोमेन के खिलाफ। वही है, जो लिखने के अधिकारों के अधिकारों के लिए सच है, लेकिन लेखन अक्सर पढ़ने के बाद कम होता है। और लेखन पहुँच सीमित सीमित से ज्यादा महत्वपूर्ण विशेष रूप से कई बाहरी के साथ, पहुँच

1

कभी कभी धीमी गति से SVN आपरेशन पढ़ा जा सकता है, डीएनएस से संबंधित है। ऐसा लगता है कि svn प्रति svn: बाहरी, यहां तक ​​कि सापेक्ष लोगों के लिए DNS लुकअप करता है। अपने svn सर्वर होस्टनाम को/etc/hosts में जोड़ना या fixv.conf को ठीक करना उपयोगी हो सकता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^