2012-03-16 20 views
8

मेरे पास एक एज़ूर वेब भूमिका पर चल रही एक साइट है और मैं web.config को संशोधित करके एप्लिकेशन को पुनरारंभ करने के लिए मजबूर कर सकता हूं लेकिन अगर मैं आईआईएस को पुनरारंभ करना चाहता हूं तो मुझे बताया गया है कि मुझे इसे दूरस्थ डेस्कटॉप के माध्यम से मैन्युअल रूप से कभी नहीं करना चाहिए और इसके बजाय मैं Azure होस्टेड प्रक्रिया को पुनरारंभ करना चाहिए।क्या प्रक्रिया को पुनरारंभ किए बिना आईआईएस को एज़ूर वेब भूमिका पर पुनरारंभ करना संभव है?

यह article seems to agree इस राय के साथ।

मेरी समस्या यह है कि किसी प्रक्रिया को पुनरारंभ करने में लगभग 10-15 मिनट लग सकते हैं। क्या इसे हासिल करने का कोई तेज तरीका है?

मैं वर्तमान में windows.azure.com UI का उपयोग सभी तैनाती और प्रबंधन करने के लिए कर रहा हूं।

+0

क्यों आप पहली जगह में आईआईएस पुनरारंभ करना चाहते हैं? – astaykov

+0

@astaykov शायद एक टिप्पणी में रखने के लिए बहुत लंबा है, लेकिन हम उम्ब्राको एक्सेलेरेटर का उपयोग कर रहे हैं और कुछ ऐसे कार्य हैं जिन्हें भूमिका पुनरारंभ करने की आवश्यकता होती है और मुझे विश्वास है कि मैं आईआईएस पुनरारंभ के साथ इसे प्राप्त करने में सक्षम हो सकता हूं। इसके अलावा हम परीक्षा Azure का उपयोग कर रहे हैं जो परीक्षण चरण के दौरान रोपी रहा है, इसलिए मुझे कभी-कभी आईआईएस को पुनरारंभ करने में सक्षम होना चाहिए। – Digbyswift

+0

ऐसी स्थितियां होती हैं जहां आप एक (उदाहरण के आधार पर) iisreset या इसी तरह के करना चाहते हैं। –

उत्तर

7

यहां कुछ बिंदुओं को इंगित करने के लिए। जब आपकी भूमिका शुरू होती है, तो यह IISConfigurator नामक कुछ का उपयोग आईआईएस को प्रोग्रामेटिक रूप से कॉल करने और सेवा परिभाषा में परिभाषित अनुसार ऐप्स, vdirs, ऐप पूल आदि बनाने के लिए करती है। यह स्टार्टअप पर एक बार किया जाता है।

याद रखें कि आपकी वेबसाइट होस्ट करने वाली w3wp.exe प्रक्रिया पूरी तरह से RoleEntryPoint से अलग है जिसे आप कोड चलाने के लिए उपयोग कर सकते हैं। इस प्रकार, आप केवल RoleEntryPoint.RequestRecycle() को नहीं कह सकते हैं और उम्मीद करते हैं कि आईआईएस पुनरारंभ होगा (यह नहीं होगा)।

यदि आप आईआईएस को पुनरारंभ करना चाहते हैं तो एक समाधान आप प्रोग्रामेटिक रूप से कर सकते हैं। यहाँ विंडोज Azure पर आईआईएस को पुन: प्रारंभ करने के लिए मेरे 3 लाइन समाधान है:।

var mgr = new ServerManager(); 
var azurePools = mgr.ApplicationPools.Where(p => Guid.TryParse(p.Name)); 
azurePools.ToList().ForEach(p => p.Recycle()); 

मैं उन्हें उनके जो मेरे में दिलचस्पी को फिल्टर करने के लिए नीचे ज्ञान है कि अनुप्रयोग पूल विंडोज Azure में GUIDs हैं उपयोग कर रहा हूँ

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

+0

+1 यह जानना अच्छा है। हमारे मामले में, हमारे पास कोई कोड नहीं है जो RoleEntryPoint में चलता है। यही कारण है कि आईआईएस पुनरारंभ करना हमारे लिए काम करता है। क्या आप उपरोक्त कोड को उत्पादन उदाहरण में चलाने की सलाह देंगे? –

+0

बहुत उपयोगी, बहुत धन्यवाद। – Digbyswift

+0

यह समाधान आईआईएस-रीसेट, या आरडीपीइंग और मैन्युअल रूप से आईआईएस प्रक्रियाओं को पुनरारंभ करने के लिए कोई अलग कैसे है? यह सिर्फ कोड के माध्यम से करता है। यदि आपके द्वारा लिंक किया गया लेख सत्य है, तो इससे कोई फर्क नहीं पड़ता। यह होगा? – ryancrawcour

0

आप उदाहरण के लिए दूरस्थ डेस्कटॉप की कोशिश कर सकते और रीसाइक्लिंग कि जिस तरह से

+1

यह वही है जो मुझे बताया गया है कि मुझे नहीं करना चाहिए - IIS को मैन्युअल रूप से पुनरारंभ करें। – Digbyswift

+0

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

2

तुम क्यों उदाहरण के पुन: प्रारंभ करने की आवश्यकता है IIS? क्या आप अपने उत्पादन परिनियोजन में स्मृति रिसाव या कुछ अन्य समस्या का सामना कर रहे हैं? एक उत्पादन वातावरण में, एक उदाहरण को पुनरारंभ करने का एकमात्र सही तरीका Azure प्रबंधन पोर्टल या Azure प्रबंधन REST API के माध्यम से है।

यदि आप एक देव/परीक्षण परिनियोजन के साथ काम कर रहे हैं, तो आप Set-RoleInstanceStatus पावरशेल सीएमडीलेट का उपयोग करके आरडीपी में अपना उदाहरण ऑफ़लाइन ले सकते हैं। इस बिंदु पर आप आईआईएसआरसेट चलाने के लिए स्वतंत्र हैं, डब्ल्यूडब्ल्यूडब्ल्यू प्रकाशन सेवा को पुनरारंभ करें, web.config को संशोधित करें, बिन फ़ोल्डर में नए डीएलएस कॉपी करें, इत्यादि। हम इन चीजों को हमारे देव/परीक्षण उदाहरणों के साथ हर समय करते हैं समस्या, लेकिन हम कभी भी आरडीपी के माध्यम से हमारे उत्पादन के उदाहरणों के साथ झुका नहीं देते जब तक कि हमें एक जरूरी समस्या का निवारण करने की आवश्यकता न हो।

+0

उपयोगी जानकारी धन्यवाद। – Digbyswift

+0

मैं निश्चित रूप से यहां सहमत होगा। आपको यह पता लगाना होगा कि आपको अपनी आईआईएस प्रक्रियाओं को रीसायकल करने की आवश्यकता क्यों है। अगर आपके पास मेमोरी रिसाव है, तो आप इसे ठीक करना चाहते हैं! – ryancrawcour

1

क्या आप Azure प्रबंधन के लिए के रूप में ही क्रेडेंशियल्स का उपयोग http://yourname.scm.azurewebsites.net से कनेक्ट करने में सक्षम होना चाहिए के रूप में अनुप्रयोग सेवा "YourName" अपना ऐप्लिकेशन url http://yourname.azurewebsites.net साथ की तरह

Azure App Service

तैनात हैं। इस यूआरएल पर आपको संबंधित ऐप सेवा के लिए Kudu मिलते हैं।

यदि आप मेनू टूल्स> समर्थन में चयन करते हैं और फिर विश्लेषण> मेट्रिक्स का चयन करें तो आपको "W3wp को पुनरारंभ करें" पर क्लिक करने में सक्षम होना चाहिए। आवेदन के लिए

Kudu UI

समय फिर से चालू होने की नहीं अप्रत्याशित रूप से लंबे समय से मैं परीक्षण किया 3 अनुप्रयोगों के लिए किया गया था।

आप केवल "निरीक्षण" w3wp करने की जरूरत है, तो आप जाँच कर सकते हैं https://youname.scm.azurewebsites.net/ProcessExplorer/

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