2009-12-10 15 views
8

हमारे पास हमारी कंपनी में एक बिज़टॉक सर्वर (वर्चुअल वन (1!) ...) है, और एक एसक्यूएल सर्वर जहां डेटा रखा जा रहा है। अब हमारे पास बहुत अधिक डेटा यातायात है। मैं हजारों के बारे में बात कर रहा हूँ। तो मैं वास्तव में यह भी सुनिश्चित नहीं कर रहा हूं कि एक सर्वर बहुत सुरक्षित है, लेकिन हमारी कंपनी को मनाने के लिए इतना आसान नहीं है।बिज़टॉक सर्वर समस्या

हाल ही में हमें बहुत सी समस्याएं हैं।

अनुमति दें मुझे विस्तार से बैठा है, इसलिए मैं कुछ भी याद आ रही नहीं कर रहा हूँ:

हमारे सर्वर 5 अनुप्रयोग हैं:

  • एक 3 orchestrations साथ, 12 बंदरगाहों भेजने के लिए, 16 स्थानों प्राप्त करते हैं।
  • 4 ऑर्केस्ट्रेशंस वाला, 32 पोर्ट बंद करें, 20 स्थान प्राप्त करें।
  • 4 ऑर्केस्ट्रेशंस के साथ, 24 बंदरगाह भेजते हैं, 20 स्थान प्राप्त करते हैं।
  • 47 (हाँ 47) ऑर्केस्ट्रेशंस के साथ एक, 37 बंदरगाह भेजते हैं, 6 स्थान प्राप्त करते हैं।
  • कुछ संसाधनों के साथ आम अनुप्रयोग के साथ एक।

हमारी समस्याएं तब हुई हैं जब हमने 47 ऑर्केस्ट्रेशंस के साथ अनुप्रयोगों को तैनात किया था। इनमें से बहुत से ऑर्केस्ट्रेशंस आकार निर्दिष्ट करते हैं जो मैपिंग करने के लिए सी # कोड का उपयोग करते हैं। ऐसा इसलिए है क्योंकि हम एचएल 7 एक्सटेंशन का उपयोग करते हैं और यह एक तरह का विशेष है, इसलिए सी # कोड & xpath का उपयोग करके मैपिंग करना बहुत आसान था क्योंकि इनमें से बहुत से स्कीमा के समान दिखते हैं। सी # एक्सपीएथ के माध्यम से प्राप्त एक्सएमएलएनोड्स में पढ़ता है, और एक्सएमएलएनोड लौटाता है जिसे फिर संदेशों को बिज़टॉक करने के लिए असाइन किया जाता है। मुझे यकीन नहीं है कि यह कारण हो सकता है, लेकिन मैंने सोचा कि मैं इसका उल्लेख करूंगा।

प्रेषण और प्राप्त बंदरगाहों में बहुत से प्रकार हैं: फ़ाइल, एमक्यूएसरीज, एसक्यूएल, एमएलएलपी, एफ़टीपी। भार को संतुलित करने के लिए इनमें से प्रत्येक प्रकार के पास एक अलग मेजबान उदाहरण होते हैं। हमारे ऑर्केस्ट्रेशंस Biztalk अनुप्रयोग होस्ट का उपयोग करते हैं।

इस सर्वर पर भी कुछ स्क्रिप्ट चल रही हैं, अधिकतर अपलोड स्क्रिप्ट्स & एक जिपर स्क्रिप्ट भी है, जो एक दैनिक ज़िप में हर आधा घंटे फ़ाइलों को ज़िप करता है और एक महीने के बाद ज़िप फ़ाइलों को हटा देता है। हम इस बैकअप फ़ाइलों पर हमारी ज़िप्स्क्रिप्ट का उपयोग करते हैं (हम बहुत बैकअप लेते हैं, बैकअप हमारे सर्वर पर भी होते हैं), हमने ऐसा इसलिए किया क्योंकि सर्वर को ऐसी जगह पर फाइल भेजने में समस्याएं थीं जहां बहुत सारी फाइलें थीं, इसलिए फ़ाइलों को ज़िप में कम कर दिया गया था यह बेहतर हो गया।

  • हमारी सबसे महत्वपूर्ण समस्या निम्नलिखित है:

    अब समस्याओं हम हाल ही में कर रहे हैं मुख्य रूप से दो प्रमुख समस्याएं हैं। हमने परीक्षण के लिए कतार पर कई संदेशों के साथ एक स्थान प्राप्त किया। इसे शुरू करने के बाद 47 ऑर्केस्ट्रेशंस का उपयोग करने वाले स्थान को प्राप्त करने के बाद, चलने वाली सेवा के उदाहरण आकाश चट्टान से शुरू होते हैं। ठीक है, यह बहुत सामान्य है। आइए 10000 के बारे में कहें, और फिर हम यह देखने के लिए प्राप्त स्थान को रोकते हैं कि बिज़टॉक इन 10000 उदाहरणों को कैसे प्रबंधित करता है। आम तौर पर वे बहुत तेज हो जाते हैं, और कभी-कभी ऐसा होता है, लेकिन थोड़ी देर के बाद यह "थ्रॉटल" शुरू होता है, जिसका अर्थ है कि वे केवल संसाधित होने से रोकते हैं और सेवा के उदाहरण एक ही संख्या में रहते हैं, उदाहरण के लिए 30 सेकंड में यह 10000 से नीचे चला जाता है 4000 तक और फिर यह 4000 पर रहता है और यह बहुत धीमा हो जाता है, जैसे 30 मिनट में 5 मिनट या कुछ। तो इसका मतलब है कि अन्य अनुप्रयोगों के सभी अन्य सेवा उदाहरण भी यहां फंस गए हैं, और इन्हें भी संसाधित नहीं किया जाता है।

हमने देखा कि हमारे मेजबान उदाहरणों को पुनरारंभ करने के बाद इंस्टेंस नंबर फिर से नीचे चला गया। इसलिए हमने समस्या का पता लगाने के लिए चुनिंदा विभिन्न होस्ट इंस्टेंस को पुनरारंभ करने का प्रयास किया। हमने देखा है कि मेजबान आवृत्ति भेजने/प्राप्त करने वाली फ़ाइल को फिर से शुरू करने से चाल चलती है। तो हमने सोचा कि फ़ाइल भेजना समस्या होगी। इस बात पर विचार करते हुए कि हम बहुत सारे बैकअप बनाते हैं। इसलिए हमने फ़ाइल प्रकार बैकअप को mqseries बैकअप के साथ बदल दिया। एक ही समस्या आई, और मजाकिया बात, फाइल भेजने/प्राप्त करने वाले फ़ाइल को पुनरारंभ करने से समस्या अभी भी ठीक हो जाती है।

ईवेंट व्यूअर में कोई भी त्रुटि नहीं मिल सकती है।

  • हमारे पास एक दूसरी समस्या है। कभी-कभी सुबह 6 बजे, होस्ट या घटनाओं का एक हिस्सा बंद कर दिया जा रहा है।

ईवेंट व्यूअर में हम निम्न त्रुटियों देखा (ये एक से अधिक कर रहे हैं):

The receive location "MdnBericht SQL" with URL "SQL://ZNACDBPEG/mdnd0001/" is shutting down. Details:"The error threshold has been exceeded. The receive location is shutting down.".

The Messaging Engine failed to add a receive location "M2m Othello Export Start Bestand" with URL "\m2mservices\Othello_import$\DataFilter Start*.xml" to the adapter "FILE". Reason: "The FILE adapter cannot access the folder \m2mservices\Othello_import$\DataFilter Start. Verify this folder exists. Error: Logon failure: unknown user name or bad password. ".

The FILE adapter cannot access the folder \m2mservices\Othello_import$\DataFilter Start. Verify this folder exists. Error: Logon failure: unknown user name or bad password.

An attempt to connect to "BizTalkMsgBoxDb" SQL Server database on server "ZNACDBBTS" failed. Error: "Login failed for user ''. The user is not associated with a trusted SQL Server connection."

यह प्रतीत woould इस समय एक लॉगिन विफलता है कि और है कि यह की वजह से अन्य सेवाओं को भी कर रहे हैं समस्याओं का सामना करना, और अंत में वे बंद हो गए हैं।

बात यह है कि, हमारा उपयोगकर्ता व्यवस्थापक है, और यह असंभव है कि यह पासवर्ड गलत है "कभी-कभी"। हम इस बात पर विचार कर रहे हैं कि समस्या बुनियादी ढांचे की समस्या के कारण हो सकती है, लेकिन यह वास्तव में विभाग नहीं है।

मुझे पता है कि यह एक लंबी पोस्ट है, लेकिन हमें यकीन नहीं है कि अब क्या करना है। एक और सर्वर जोड़ना और भार को संतुलित करना हमारी समस्याओं को हल करेगा? क्या हमारे संतुलन को मापने का तरीका है और पता है कि विभाजन कहां शुरू करना है? लोड आदि की सामान्य संख्या क्या हैं?

मैं किसी भी उत्तर की सराहना करता हूं क्योंकि ये समस्याएं और भी खराब हो रही हैं और हम भी समय सीमा पर हैं।

उत्तर के लिए बहुत बहुत धन्यवाद!

+0

हमें एक ही समस्या है, क्या आपके पास कोई और दस्तावेज है? –

उत्तर

8

आपकी तत्काल समस्या BizTalk throttlingfeature है। यह BizTalk अस्थायी अधिभार स्थितियों में जीवित रहने में मदद करने के लिए माना जाता है। इसकी कई समस्याओं में से एक यह है कि आप केवल प्रदर्शन मॉनिटर में थ्रॉटलिंग किक-इन देख सकते हैं, न कि ईवेंट लॉग में।

आपको क्या करना चाहिए:

  1. अलग आवेदनों में से बाकी की तुलना में किसी भिन्न होस्ट पर नए आवेदन। होस्ट स्तर में थ्रॉटलिंग किया जाता है। तो समस्याग्रस्त एप्लिकेशन शेष अनुप्रयोगों को प्रभावित नहीं करेगा।
  2. उपरोक्त लिंक में थ्रॉटलिंग को अक्षम करने के तरीके के बारे में पढ़ें।
  3. हमने जो किया है वह बाहरी थ्रॉटलिंग सेवा को कार्यान्वित कर रहा है। वह बिज़टॉक को छोटे पाचन पैकेट में स्थान प्राप्त करता है। इसकी बदसूरत, लेकिन समस्या बदसूरत है।

टिप्पणी करने के लिए अद्यतन: आपके पास पर्याप्त होस्ट उदाहरण हैं। तो उस सलाह को अनदेखा करें। आप उदाहरणों के बीच अनुप्रयोगों को पुन: व्यवस्थित कर सकते हैं। लेकिन ऐसा करने के लिए कोई स्पष्ट दिशानिर्देश नहीं हैं। तो यह सिर्फ shuffling और अनुमान है।
थ्रॉटलिंग को अक्षम करने की सुरक्षितता के बारे में। यह सुविधा कई परिदृश्यों में ज्यादा समझ नहीं लेती है। आपको इसका अध्ययन करना होगा। जांचें कि आप किस थ्रॉटलिंग पैरामीटर को मार रहे हैं (यह प्रदर्शन मॉनीटर में देखा जा सकता है) और तय करें कि थ्रेसहोल्ड को कैसे बदला जाए।

+0

थ्रॉटलिंग को असुरक्षित नहीं कर रहा है? मुझे पता है कि जब यह हमारे सीपीयू को थ्रॉटल कर रहा है तो यह 10-20% की तरह है। जो हास्यास्पद है, जब हम पुनरारंभ करते हैं और यह ठीक काम कर रहा है तो यह 100% पर है, इसलिए यह सामान्य है। मैं देख सकता हूं कि थ्रॉटलिंग के 6 अलग-अलग तरीकों की तरह, क्या मुझे बस उन सभी को अक्षम करना चाहिए ?? और यह सुरक्षित है? यह एक कारण के लिए सही है? और मेजबान उदाहरणों को विभाजित करने के बारे में। तो मुझे बस एक आवेदन उदाहरण में प्रत्येक एप्लिकेशन को विभाजित करना चाहिए? हमें अब 20 होस्ट इंस्टेंस पसंद हैं, इसलिए यदि मैं प्रति एप्लिकेशन होस्ट होस्ट को विभाजित करता हूं तो हमें केवल 20 – WtFudgE

3

आपके पास कितने होस्ट उदाहरण हैं?

लाइन से:

The send and receive ports have a lot of different types: File, MQSeries, SQL, MLLP, FTP. Each of these types have a different host instances, to balance out the load. Our orchestrations use the BiztalkApplication host

ऐसा लगता है कि आप एक बहुत कुछ है - मैं हाल ही में एक प्रणाली है जहाँ BizTalk स्वयं थ्रॉटलिंग था और इस मुद्दे को भी कई मेजबान उदाहरणों की वजह से भाग में था की एक लेखापरीक्षा किया था। प्रत्येक मेजबान उदाहरण BizTalk संदेशबॉक्स पर अपना स्वयं का भार रखता है, साथ ही कम से कम 200 एमबी मेमोरी भी चबाता है।

अपनी टिप्पणी पढ़ना, आपके पास 20 है - यह बहुत अधिक है और आपकी समस्याओं का एक बड़ा हिस्सा होगा।

एक अच्छा प्रारंभिक मेजबान सेटअप होगा:

  • एक समर्पित ट्रैकिंग मेजबान
  • एक मेजबान शामिल है कि सभी एडेप्टर के लिए संचालकों प्राप्त
  • एक मेजबान सभी orchestrations जिसमें
  • एक मेजबान शामिल हैं सभी एडाप्टर के लिए हैंडलर भेजें
  • क्लस्टर (जैसे एफ़टीपी और एमएसएमक्यू) की आवश्यकता वाले एडाप्टर के लिए एक मेजबान

फिर आप "रीयल टाइम" होस्ट और बैच किए गए होस्ट पेश करने जैसी चीजों पर भी विचार कर सकते हैं, ताकि आप कम विलंबता के लिए वास्तविक समय होस्ट को ट्यून कर सकें।

यदि अस्थिर होने के लिए जाना जाता है तो आप विशिष्ट अनुप्रयोगों के लिए मेजबान भी हो सकते हैं, लेकिन आम तौर पर यह नहीं किया जाना चाहिए।

+0

के बजाय 4 होस्ट इंस्टेंस पसंद हैं। हमारे पास लगभग 20 होस्ट इंस्टेंस हैं। क्या हमारे पास प्रत्येक एप्लिकेशन के लिए 1 होस्ट उदाहरण होना चाहिए? क्योंकि मुझे याद है कि हमें कोई समस्या थी, हमने इस समस्या को हल करने के लिए एक अतिरिक्त होस्ट इंस्टेंस बनाया था। मुझे यकीन नहीं है कि यह क्या था, इसलिए शायद प्रति एप्लिकेशन होस्ट इंस्टेंस को अलग करना अभी भी इसे ठीक कर सकता है। क्या मैं इसमें सही हूं? – WtFudgE

+0

20 मेजबान उदाहरण मेरे अनुभव में बहुत अधिक हैं। मैंने ध्वनि जवाब सेटअप को रेखांकित करते हुए, मेरे उत्तर में अधिक जानकारी जोड़ दी है। –

1

मैं एक बिज़टॉक प्रणाली चलाता हूं जिसमें समान समस्याएं होती हैं और आप जो देख रहे हैं उसके साथ सहानुभूति दे सकते हैं। मुझे नहीं पता कि यह वही है, लेकिन मैंने सोचा कि मैं अपने अनुभव को मामले में साझा करूंगा।

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

मुझे डर है कि मैं अभी तक इस मुद्दे को हल नहीं किया है, लेकिन कुछ चीजें मैं इस मुद्दे को कम करने के लिए मिला: ताकि थ्रॉटलिंग होते हैं या नहीं है

  1. एक दिया प्रक्रिया के लिए स्मृति उठाएँ बाद में
  2. होता है
  3. प्रत्येक होस्ट इंस्टेंस, जबकि सूचनात्मक, में एक ओवरहेड जोड़ा जाता है। मेमोरी पैर प्रिंट को कम करने के लिए मेजबानों को संयोजित करने का प्रयास करें जो आपकी समस्या बच्चों को एक साथ नहीं हैं।
  4. समस्या पर फेंक हार्डवेयर, राम सस्ती है
  5. मैं परफ़ॉर्मेंस में हर कुछ मिनट निम्नलिखित इसलिए मैं का निदान जहां समस्या है सकते हैं उपाय:

    BizTalk: MessageAgent (*) \ प्रक्रिया स्मृति उपयोग (MB)

    BizTalk: MessageAgent (*) \ प्रक्रिया स्मृति उपयोग सीमा

    मेमोरी \ उपलब्ध मेगाबाइट

कुछ अन्य चीजों को देखने के लिए। सुनिश्चित करें कि कोई कस्टम पाइपलाइन अच्छी बिज़टॉक मेमोरी प्रथाओं का उपयोग करती है (यानी कोई एक्सएमएल डोम मैनिपुलेशन कहीं छिपा नहीं है, आदि)। साथ ही किसी दिए गए मेजबान के लिए धागे की संख्या को सैद्धांतिक रूप से कम करने से स्मृति की मात्रा कम होनी चाहिए जो इसे एक बार में जब्त कर सकती है। मुझे इस के साथ बहुत भाग्य नहीं लग रहा था। हो सकता है कि बिज़टॉक थ्रॉटलिंग ने इसे ओवरराइड किया जैसा कि अन्य ने उल्लेख किया है, मुझे नहीं पता। इसके अलावा, एक अंतिम नोट पर, यदि आप परफॉर्म परिणाम को सीएसवी पर डंप करते हैं, तो एक्सेल के साथ आप कुछ सुंदर मेमोरी उपयोग ग्राफ बना सकते हैं। यह अधिक हार्डवेयर खरीदने के बारे में प्रबंधन से बात करने के लिए उपयोगी हो सकता है। ऐसा लगता है कि आपका मुद्दा इस परिदृश्य को भी फिट करता है।

1

हमने आपके सभी उत्तरों के संयोजन के कारण अस्थायी रूप से समस्या को ठीक किया है।

हमने कुछ मेजबानों की प्रक्रिया मेमोरी उपयोग थ्रॉटलिंग पैरामीटर सेट किया है।

हमने मेजबान इंस्टेंस के संतुलन को सभी होस्टों के सभी मेमोरी उपयोग का विश्लेषण करने के बाद बेहतर प्रदर्शन काउंटरों के लिए धन्यवाद और MsgBoxViewer नामक टूल के उपयोग के साथ भी विभाजित किया।

और अब हम अधिक भौतिक स्मृति & उम्मीद कर रहे हैं कि एक अतिरिक्त सर्वर या 64 बिट सर्वर भी हो।

सभी उत्तरों के लिए धन्यवाद!

1

हमने हाल ही में हमारे पुराने सर्वर के साथ क्लस्टर में 64-बिट सर्वर स्थापित किया है। इसके लिए धन्यवाद हम स्मृति को संतुलित भी कर सकते हैं जिससे कई समस्याएं हल हो गईं।

हालांकि 64-बिट हमें ज्यादा सुधार नहीं दिया क्योंकि यह आईबीएम MQ के, MLLP की, HL7 पाइपलाइनों आदि पर 64-बिट का उपयोग नहीं कर सकते हैं (थोड़ा अधिक स्मृति को छोड़ कर) ...

0

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

आप कहते हैं कि आप संदेश असाइनमेंट आकार में ऑर्केस्ट्रेशन में बहुत अधिक संदेश कुशलतापूर्वक करते हैं।

मैं उस कोड को समर्पित ट्रांसफॉर्म पर ले जाने की अनुशंसा करता हूं। वे अधिक हल्के वजन हैं, और तेजी से निष्पादित किया जा सकता है। कड़ी मेहनत करने के लिए आप इन मानचित्रों में कस्टम xslt और c# जोड़ सकते हैं। विकास, डिजाइन और परीक्षण में ऑर्केस्ट्रेशंस की लागत अधिक होती है, और रन-टाइम प्रदर्शन में बहुत अधिक है।

फिर आप संदेश परिवर्तन के लिए ट्रांसफॉर्म का उपयोग कर सकते हैं, और ऑर्केस्ट्रेटिंग के लिए ऑर्केस्ट्रेटिंग (संदेश असाइनमेंट कोड को स्थानांतरित करने के बाद इसे छोड़ दिया गया है) छोड़ दें।

ऑर्केस्ट्रेशंस पर ट्रांसफॉर्म का उपयोग करने का अतिरिक्त लाभ यह है कि वे अधिक परीक्षण योग्य हैं।

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