को 40/sec 500/sec
IntroductionSurprised, शीर्षक द्वारा? ठीक है, इस के दौरे कैसे हम एक प्रति मामूली 40 रिकॉर्ड को संभालने से scalability मनहूस फटकारा है दूसरी प्रति सेकंड 500 रिकॉर्ड है. सावधान, हम समस्याओं का सामना करना पड़ा था की सबसे अधिक सीधे आगे है, तो अनुभवी लोगों को इस ज़रूरत से ज़्यादा मिल सकता है. * 1.0 Contents हम कहाँ थे? 1.1 मेमोरी आकाश 1.2 कम प्रसंस्करण दर 1.3 डेटा हानि :-( Mysql 1.4 हिट हमें नीचे खींचती 1.5 धीरे वेब ग्राहकों का * 2.0 रोड Nirvana2.1 नियंत्रण स्मृति के लिए! 2.2 सरल प्रसंस्करण दर 2.3 क्या डेटा हानि उह, उह? 2.4 ट्यूनिंग SQL प्रश्न 2.5 ट्यूनिंग डाटाबेस स्कीमा Mysql 2.5 मदद करता है हमें आगे बना! 2.6 तेज़ ... तेजी से वेब ग्राहकों का * 3.0 निचला lineWhere थे? शुरू में हम एक ऐसी प्रणाली है जो केवल 40 तक के रिकॉर्ड स्तर सकता / सेक था. मैं भी चर्चा याद सकता है, के बारे में "क्या अभिलेखों का आदर्श दर होना चाहिए?". अंत में हम उस 40/sec निर्णय लिया गया एक फ़ायरवॉल के लिए आदर्श दर. सो, जब हमें बाहर जाना है, हम 3 firewalls समर्थन की आवश्यकता कम से कम. इसलिए हमने तय किया कि 120/sec आदर्श दर होगी. आधारित हमारे प्रतियोगी (ओं से डेटा पर) हमारे पास आए निष्कर्ष है कि, वे आस पास का समर्थन 240/sec सकता है. हमने सोचा कि यह ठीक था! क्योंकि यह हमारी पहली रिलीज किया गया. क्योंकि सभी प्रतियोगियों firewalls की संख्या नहीं बल्कि वह समर्थित rate.Memory पर के बारे में बात की हिट skyOur स्मृति हमेशा भी 512MB में आकाश मार रहा था! (OutOfMemory अपवाद) हम cewolf (उत्पन्न images.But हम लंबे समय से बच नहीं सकता के एस) inmemory कैशिंग को दोषी ठहराया! कोई फर्क नहीं पड़ता कि क्या हम ग्राहक जुड़े या नहीं हम कुछ दिनों में आकाश हिट अधिकतम 3-4 दिनों के फ्लैट थे! दिलचस्प है, यह प्रतिलिपि प्रस्तुत करने योग्य है जब हम बहुत उच्च दर पर डेटा भेजा गया था (तब) के लगभग 50/sec. आप इसे सही अंदाजा लगाया था, एक असीमित बफर जो जब तक यह roof.Low प्रसंस्करण rateWe हिट बढ़ता 40/sec की दर में रिकॉर्ड प्रसंस्करण थे. हम dataobject के थोक अद्यतन का उपयोग कर रहे थे (s). लेकिन यह उम्मीद की गति नहीं दे दिया! इस वजह से हम इकट्ठा करना शुरू कर दिया स्मृति में डेटा बहुत उच्च गति कम स्मृति होर्डिंग! डाटा नुक्सानः :-( हम कई एक पैकेट (ओं) को याद करते हैं जिसके परिणामस्वरूप., हम थोड़ा डेटा हानि है, लेकिन लग रहा था कि एक स्मृति हॉग के परिणामस्वरूप. tweaking पर कुछ हद तक बफर आकार हम बहुत अधिक rates.Mysql में लगभग 20% की एक सतत डेटा हानि होने लगा हमें खींचती downWe एक कठिन समय का सामना कर रहे थे जब हम 140MB के बारे में एक लॉग फ़ाइल आयात किया. Mysql हॉग को शुरू कर दिया, मशीन और रेंगने लगी कभी कभी यह भी सब responding.Above बंद कर दिया है, हम गतिरोध हो रही शुरू (एस) और लेनदेन आउटः (s). जो अंततः system.Slow वेब ClientHere की प्रतिक्रिया फिर से कम हम की संख्या को दोषी ठहराया रेखांकन हम टोंटी के रूप में एक पृष्ठ में दिखाई, इस तथ्य है कि वहाँ कई अन्य कारकों है कि प्रणाली खींच रहे थे नीचे की अनदेखी कर रहे थे. से 30 सेकंड के लिए 6-8 रेखांकन और तालिकाओं के साथ एक पृष्ठ लोड करने के लिए ले जाया करते थे पन्ने इंटरनेट डाटा Center.Road से कम 4 NirvanaControlling स्मृति दिनों के बाद, हम के लिए 10,000 के बफर आकार की सीमा डाल करने की कोशिश की, लेकिन यह लंबे समय तक नहीं किया है. डिजाइन में प्रमुख दोष था कि हम मान लिया है कि लगभग 10000 के बफर पर्याप्त, अर्थात् हम प्रक्रिया रिकॉर्ड 10,1000 तक पहुँच के बफर से पहले हो जाएगा. सिद्धांत के साथ इनलाइन "गलत गलत जाएगा कुछ कर सकते हैं!" ये गलत हो गया था. हम डेटा खोने लगे. Subsesquently हम एक फ्लैट फ़ाइल आधारित कैशिंग, जिसमें डेटा फ्लैट फ़ाइल में फेंक दिया गया था के साथ जाओ और "लोड डेटा का उपयोग कर infile डेटाबेस में लोड किया जाएगा का फैसला किया." यह कई बार एक थोक तेजी से गया था डेटाबेस ड्राइवर के द्वारा डालें. तुम भी Checkout को लोड डेटा के साथ कुछ संभव अनुकूलन infile चाहते हो सकता है. कच्चे records.The दूसरी समस्या का सामना हम बफर के आकार को बढ़ाने की हमारी समस्या यह तय हो गया था cewolf की वृद्धि (एस) की स्मृति में तंत्र कैशिंग. डिफ़ॉल्ट इसे इस्तेमाल किया "TransientSessionStorage" जो caches स्मृति में छवि वस्तुओं तक, वहाँ तक चीजों को साफ करने में कुछ समस्या लग रहा था, यहां तक कि बाद rerferences खो रहे थे! तो हम एक छोटी सी "FileStorage कार्यान्वयन" जो स्थानीय फ़ाइल में छवि वस्तुओं की दुकान लिखा था. और के रूप में कार्य किया जाएगा और जब अनुरोध और फिर अंदर आता है, हम भी एक सफाई implmentated था सफाई के लिए व्यवस्था बासी छवियाँ (चित्र 10mins से पुराने). एक दिलचस्प पहलू हम यहाँ पाया गया कि मल जमा सबसे कम प्राथमिकता था इसलिए प्रत्येक रिकॉर्ड के लिए बनाई गई वस्तुओं, शायद ही साफ हो गया. यहाँ एक छोटा गणित की समस्या की भयावहता की व्याख्या है. हम 1 पल के लिए जब भी हम एक लॉग रिकॉर्ड बनाया ~ 20 वस्तुओं (hashmap, tokenized तार आदि) 500/sec की दर से बहुत प्राप्त वस्तुओं की संख्या थी 10,000 (500 * 20 * 1). कारण भारी प्रसंस्करण मल जमा करने की वस्तुओं सफाई के लिए एक मौका नहीं था. तो हम सभी को करना था एक छोटी सी tweak था, हम सिर्फ सौंपा "रिक्त" वस्तु संदर्भ के लिए. देखा! कचरा कलेक्टर अत्याचार कभी नहीं था मुझे लगता है ;-) rateThe प्रसंस्करण दर प्रसंस्करण सरल एक 40/sec मामूली इसका मतलब है कि हम शायद ही लॉग इन अभिलेखों का भी एक छोटा सा विस्फोट सामना सकता था! स्मृति नियंत्रण हमें दिया कुछ सांत्वना, पर वास्तविक समस्या रिकॉर्ड पर सतर्क फ़िल्टर के आवेदन के साथ था. हम एक रिकॉर्ड के लिए 20 संपत्तियों के आसपास था, हम सभी संपत्तियों के लिए खोज करते थे. हम कार्यान्वयन में परिवर्तित हम उन गुणों के लिए मानदंड था मैच के लिए! इसके अलावा, हम भी सतर्क फ़िल्टर प्रसंस्करण में एक स्मृति रिसाव था. हम एक कतार जो हमेशा के लिए बढ़ा रखी. तो हम एक फ्लैट फ़ाइल बनाए रखने थी बचने के डंपिंग वस्तु फिर से रिकॉर्ड की पार्सिंग के लिए वस्तुओं फार्म का! इसके अलावा, हम जायदाद में से प्रत्येक के लिए एक मैच के लिए खोज भी जब हम कोई चेतावनी मानदंड configured.What डेटा हानि उह, उह था का कार्य किया करते थे? एक बार जब हम याद तय डेटा प्राप्त करने में मुद्दों फ्लैट फ़ाइल में डंपिंग यानी, हम डाटा खो कभी नहीं! के अतिरिक्त है कि हम कच्चे तालिका में अवांछित अनुक्रमित के एक जोड़े को हटाने के लिए भूमि के ऊपर से बचने था, जबकि डेटा डंपिंग. हम के लिए अनुक्रमित hadd कॉलम जो 3 संभव मूल्यों की अधिकतम हो सकता था. जो वास्तव में डालने के धीमी कर दिया गया था और एसक्यूएल QueriesYour प्रश्नों useful.Tuning नहीं प्रदर्शन के लिए अपनी चाबियाँ हैं. एक बार जब आप मुद्दों उत्कृष्ट शुरू, तुम जाएगा देखना है कि आप भी डे के लिए है, शायद टेबल मानक के अनुसार. हमने कर दिया! यहाँ के कुछ प्रमुख learnings है: * का प्रयोग करें "विश्लेषण टेबल 'को कैसे mysql क्वेरी से काम करता है पहचान. यह तुम्हारे बारे में अंतर्दृष्टि दे क्यों क्वेरी धीमी है, अर्थात क्या यह सही अनुक्रमित उपयोग कर रहा है, चाहे वह एक मेज स्तर पर इस्तेमाल कर रहा है स्कैन आदि * कभी पंक्तियाँ 50,000 रिकॉर्ड के क्रम में एक तालिका में भारी डेटा के साथ जब तुम सौदा हटा दें. हमेशा के लिए एक "ड्रॉप तालिका करने की कोशिश" जितना संभव हो. अगर यह संभव नहीं है, आपके स्कीमा को नया स्वरूप देना, कि अपने ही रास्ता है! * अवांछित में शामिल होने के (एस), डी के लिए डर नहीं होना सामान्य से बचें (यानी कॉलम मूल्यों डुप्लिकेट) एस) के रूप में बहुत संभव के रूप में शामिल होने के (से बचें , वे आपकी क्वेरी से नीचे खींच देते हैं. एक छिपा लाभ तथ्य यह है कि वे अपने प्रश्नों में सादगी लागू .* यदि आप थोक डेटा के साथ काम कर रहे हैं, हमेशा प्रयोग "लोड infile डेटा" वहाँ दो विकल्प यहाँ हैं, स्थानीय और दूरस्थ. प्रयोग करें स्थानीय अगर mysql और आवेदन पत्र एक ही मशीन में हैं अन्यथा उपयोग के लिए दूरदराज के दो या तीन सरल प्रश्नों में अपने जटिल प्रश्नों विभाजन का प्रयास करें .*. इस दृष्टिकोण में लाभ कर रहे हैं कि mysql पूरी प्रक्रिया के लिए संसाधन hogged नहीं करना है. के लिए अस्थायी सारणी का प्रयोग करते हैं. इसके बजाय 5-6 टेबल .* डेटा की विशाल राशि के साथ जब तुम सौदा भर में एक भी प्रश्न का उपयोग कर जो spans के, यानी आप प्रोसेसर को कहना चाहता हूँ 50,000 रिकॉर्ड या अधिक एक प्रश्न में बैच प्रक्रिया को रिकॉर्ड करने की सीमा का उपयोग कर प्रयास करें. यह आपकी मदद करेंगे नई ऊंचाइयों को व्यवस्था पैमाने * हमेशा छोटे लेनदेन (एस) के बजाय बड़े लोगों की भर में फैले यानी "n का प्रयोग" सारणी. Mysql संसाधन, जो कि प्रणाली की मंदी सरल प्रश्नों का प्रयोग करें * s) कॉलम पर अनुक्रमित या विदेशी कुंजी के साथ (* सुनिश्चित करें कि उपयोगकर्ता इंटरफ़ेस से प्रश्न हैं में शामिल होने के लिए भी कारण हो इस ताले मापदंड या सीमा .* इसके अलावा, यह सुनिश्चित करें कि मापदंड कॉलम * अनुक्रमित उद्धरण चिह्नों के भीतर है SQL मानदंडों में संख्यात्मक मूल्य नहीं है, क्योंकि mysql एक प्रकार डाली है * के रूप में अस्थायी तालिका का उपयोग संभव हो उतना ही है, और ड्रॉप यह ...* चयन की डालें / हटाने के डबल लॉक टेबल है ... जानते हो परवाह है कि आप अपने अद्यतनों के डेटाबेस के लिए आवृत्ति के साथ mysql डेटाबेस दर्द नहीं ले ...*. हम एक विशिष्ट मामले में हम को डंप इस्तेमाल किया था डाटाबेस हर 300 रिकॉर्ड के बाद. तो हम परीक्षण के लिए 500/sec हम देख कि mysql वस्तुतः हमें नीचे खींच रहा था तब शुरू हुई जब शुरू कर दिया. यह तब होता है जब हमें पता चला कि की दर से typicall 500/sec वहाँ एक है "लोड डेटा infile" mysql डेटाबेस को हर दूसरे से अनुरोध करता. तो हम करने के लिए रिकॉर्ड 3 मिनट डेटा की विशाल राशि के साथ के बजाय 300 records.Tuning डेटाबेस schemaWhen सौदा तुम्हारे बाद, हमेशा यह सुनिश्चित करने डंप बदलना पड़ा कि आप अपने डेटा विभाजन. कि आपके scalability में सड़क है. के साथ एक एकल मेज कहना है 10 लाख पैमाने पर कभी नहीं हो सकता. आप रिपोर्ट के लिए प्रश्नों को अंजाम जब चाहते हैं. हमेशा तालिका में दो स्तरों पर है, कच्चे टेबल के लिए एक वास्तविक आंकड़ों और रिपोर्ट टेबल के लिए कोई अन्य सेट (तालिका, जो उपयोगकर्ता के प्रश्न! इंटरफेस) हमेशा यह सुनिश्चित करें कि एक सीमा से परे अपनी रिपोर्ट टेबल पर डेटा नहीं बढ़ता है. तुम बैठाना के लिए Oracle इस्तेमाल की योजना बना रहे हैं, तुम बाहर मानदंडों के आधार पर विभाजन की कोशिश कर सकते हैं. लेकिन दुर्भाग्य से नहीं समर्थन mysql कि. तो हमें करना होगा. एक मेटा तालिका जिसमें आप शीर्ष अर्थात मेज जानकारी के लिए देखने के लिए बनाए रखना है, दी मापदंड का एक सेट के लिए .* अमूमन समय हम अपने डाटाबेस स्कीमा के माध्यम से चलना था और हम कुछ अनुक्रमित जोड़ने के लिए, कुछ को हटाना और कहा भी स्तम्भ (नों) में शामिल होने के महंगा (s) .* हम एहसास आगे जा रहे हटाने के लिए दोहराया गया कि वाले कच्चे सारणी के रूप में InnoDB वास्तव में सिस्टम को भूमि के ऊपर था, तो हम इसे MyISAM में बदल * हम भी स्थिर में शामिल तालिका में पंक्तियों की संख्या को कम करने की हद तक चला गया शामिल डेटाबेस में रिक्त * टेबल पर कुछ हिट प्रदर्शन के कारण लगता है, तो उन से बचने के * स्तंभ है जो 2-3 के मूल्यों * क्रॉस अपने तालिका में प्रत्येक सूचकांक के लिए जरूरत की जांच करने के लिए अनुमति दे दी है अनुक्रमित नहीं करते हैं, वे महंगे हैं. अगर टेबल InnoDB के हैं फिर डबल उनकी जरूरत की जाँच करें. क्योंकि InnoDB टेबल लगते हैं आस पास 10-15 बार MyISAM टेबल के आकार का उपयोग करें .* MyISAM लेने के लिए जब भी वहाँ का बहुमत है, दोनों में से किसी एक का चयन करें (या डालें) प्रश्नों. यदि डालने और चुनने के लिए और अधिक हो तो यह है कि यह एक InnoDBMysql में मदद करता है हमें आगे के रूप में बेहतर बनाने जा रहे हैं! अपने mysql सर्वर केवल ट्यून के बाद आप ठीक आपके प्रश्नों धुन / schemas और अपने कोड. तो सिर्फ तुम एक देख सकते हैं प्रदर्शन में सुधार perceivable. यहाँ पैरामीटर है कि काम में आता है कुछ: - * बफर पूल आकार जो आपके प्रश्नों तेजी से लागू करने में सक्षम होगा प्रयोग कर रहे हैं = InnoDB और उपयोग के लिए 64M innodb_buffer_pool_size - मुख्य bufer-= 32M आकार MyISAM * के लिए भी आसान प्रश्नों अपेक्षा से अधिक समय लेने शुरू कर दिया. हम वास्तव में हैरान थे! हम mysql एहसास हुआ कि किसी की मेज पर डालने शुरू की सूची लोड लगता है. तो क्या हुआ आम तौर पर हुआ, 5-10 पंक्तियों के साथ एक मेज पर किसी भी साधारण प्रश्न 1-2 सेकेंड चारों ओर ले गया था. और विश्लेषण पर हमने पाया कि केवल साधारण क्वेरी से पहले, "लोड डेटा" infile हुआ. यह गायब हो गई जब हम बदल MyISAM प्रकार के कच्चे टेबल, क्योंकि innodb के लिए बफर आकार और MyISAM दो अलग configurations.for और विन्यास पैरामीटर here.Tip देखें: अपने mysql शुरू करने के लिए निम्नलिखित विकल्प के साथ शुरू कर रहे हैं - लॉग त्रुटि इस त्रुटि loggingFaster ... तेजी से वेब ClientThe उपयोगकर्ता इंटरफ़ेस सक्षम हो जाएगा किसी भी उत्पाद के लिए महत्वपूर्ण है, खासकर पृष्ठ की गति माना जाता है और अधिक महत्वपूर्ण है! यहाँ समाधान और learnings की एक सूची है कि काम में आ: * यदि आपके डेटा को बदलने के लिए नहीं जा रही है शायद 3-5 मिनट कहते हैं, यह कैश के लिए बेहतर है अपने ग्राहक की ओर पृष्ठों * करते हैं पर भीतरी रेखांकन वे एक कथित स्थिरता देने आदि के लिए (s) iframe का उपयोग करें आपके पृष्ठों. बेहतर अभी भी आधारित जावास्क्रिप्ट सामग्री लोड प्रणाली का उपयोग करें. कहना है कि यह कुछ तुम करना चाहते हो जब तुम हो जाता है 3 उसी पृष्ठ .* इंटरनेट एक्सप्लोरर पूरे पेज में प्रदर्शित + रेखांकन सब केवल जब सामग्री सर्वर से प्राप्त कर रहे हैं. तो यह सामग्री लोड करने के लिए iframes या जावास्क्रिप्ट का उपयोग करें .* कभी बहु / प्रतिलिपि HTML पृष्ठ में सीएसएस फ़ाइल की प्रविष्टियों का प्रयोग उचित है. इंटरनेट एक्सप्लोरर के लिए एक बोझ आदत है सीएसएस एक अलग प्रविष्टि के रूप में फ़ाइल और पूरा पृष्ठ पर लागू होता है! मुनाफा आपके प्रश्नों और स्कीमा प्रणाली धीमी करने के लिए! उन्हें पहले ठीक करें और फिर डेटाबेस दोष! भी देखें * उच्च निष्पादन Mysql * क्वेरी कार्यप्रदर्शन *
Article Source: Messaggiamo.Com
Related:
» Seo Elite: New Seo Software!
» AntiSpywareBOT
» Reverse Mobile
» Error Nuker
Webmaster Get Html Code
Add this article to your website now!
Webmaster Submit your Articles
No registration required! Fill in the form and your article is in the Messaggiamo.Com Directory!