2010-12-01 11 views
8

शुरू करने के तुरंत बाद बंद हो रहा है मेरे पास एक अजीब वर्कररोल है जो किसी भी स्पष्ट कारण के लिए रोक रहा है (कोई अपवाद नहीं फेंक दिया जा रहा है)। यह हर बार एक ही स्थान पर रुक जाता है, लेकिन कोड बस एक प्रक्रिया को निष्पादित कर रहा है जिसमें चलाने के लिए लगभग 20 सेकंड लगते हैं। क्या कोई इस बात के बारे में बता सकता है कि यह क्यों हो रहा है? क्या ऑनस्टार्ट() विधि पर कोई टाइमआउट है जिसे मुझे पता नहीं है?Azure WorkerRole

यहाँ क्या मेरी कार्यकर्ता भूमिका में हो रहा है के टूटने है:

onStart() -> निदान कॉन्फ़िगर

रन() ->

  1. एक टाइमर सेट कर दिया जाता (60) के लिए आवेदन के मांस को ट्रिगर करें
  2. कुछ डिफ़ॉल्ट सेटिंग्स लोड करने के लिए एक नया धागा शुरू किया गया है (~ 30 सेकंड लेता है)

कोड कभी भी # 1 के मांस तक नहीं पहुंचता है।

उपरोक्त # 1 के लिए, मैंने इसे टाइमर के बिना और बिना किसी अंतर के कोशिश की है। ऊपर # 2 के लिए, मैंने इसे एक नया धागा शुरू करने के बिना और बिना किसी अंतर के कोशिश की है (कोई फर्क नहीं पड़ता)।

यहाँ मेरी कार्यकर्ता की भूमिका के लिए डिबग आउटपुट है:

WaWorkerHost.exe Information: 0 : deployment(108).ApiAzure.Workers.0 - Workers.OnStart() 
Microsoft.WindowsAzure.ServiceRuntime Information: 202 : Role entrypoint . COMPLETED OnStart() 
The thread 'Role Initialization Thread' (0x29fc) has exited with code 0 (0x0). 
Microsoft.WindowsAzure.ServiceRuntime Information: 203 : Role entrypoint . CALLING Run() 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Jason A. Kiesel\Projects\FS_CITYSOURCED\WorkersAzure\bin\Stage\WorkersAzure.csx\roles\Workers\approot\FreedomSpeaks.Logging.dll', Symbols loaded. 
Microsoft.WindowsAzure.ServiceRuntime Warning: 204 : Role entrypoint . COMPLETED Run() ==> ROLE RECYCLING INITIATED 
Microsoft.WindowsAzure.ServiceRuntime Information: 503 : Role instance recycling is starting 
The thread 'Role Start Thread' (0x1fa0) has exited with code 0 (0x0). 
The thread '<No Name>' (0x1624) has exited with code 0 (0x0). 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll' 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\System.Transactions.dll' 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll' 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0.0__b77a5c561934e089\System.Numerics.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
Microsoft.WindowsAzure.ServiceRuntime Information: 205 : Role entrypoint . CALLING OnStop() 
WaWorkerHost.exe Information: 0 : deployment(108).ApiAzure.Workers.0 - Workers.OnStop() 
Microsoft.WindowsAzure.ServiceRuntime Information: 206 : Role entrypoint . COMPLETED OnStop() 
The thread 'Role Stop Thread' (0x2dac) has exited with code 0 (0x0). 
The program '[12228] WaWorkerHost.exe: Managed (v4.0.30319)' has exited with code -66053 (0xfffefdfb). 
+0

क्या आप कोड पोस्ट कर सकते हैं? – Igorek

+1

मुझे पता चला कि एप्लिकेशन क्यों क्रैश हो रहा था और एक फिक्स में डाल दिया गया था, लेकिन यह अभी भी मुझे समझ में नहीं आता है कि कार्यकर्ता की भूमिका पहली जगह क्यों दुर्घटनाग्रस्त हो जाएगी। ऐप के "कॉन्फ़िगरेशन" सेक्शन को शुरू करने पर ट्रिगर किया गया था जिसमें एक तरीका था जिसने चलाने के लिए काफी समय लगाया था। मैंने मांग पर चलाने के लिए "कॉन्फ़िगरेशन" कोड के उस भाग को स्थानांतरित किया (आलसी लोड)। यह समस्या को ठीक करने लग रहा था। – Jason

+0

आपने यह कैसे पता लगाया कि यह क्यों दुर्घटनाग्रस्त हो रहा था? मुझे एक ही समस्या प्रतीत होती है, लेकिन अपवाद के बिना इसे डीबग करना मुश्किल है:/ –

उत्तर

7

कोड देखकर बिना, यह लग रहा है अपने भागो विधि की तरह बाहर निकलने है। यदि रन विधि कभी बाहर निकलती है, तो भूमिका रुक जाएगी। विजुअल स्टूडियो में क्लाउड प्रोजेक्ट में जोड़े जाने पर डिफ़ॉल्ट कार्यकर्ता भूमिका जिस तरह से बनाई जाती है, यह विधि के अंत में एक अनंत लूप डालना है। तो अपने कोड इस के समान दिख सकता है:

public override void Run() 
{ 
    StartMyTimer(); 
    LoadDefaultSettings(); 

    while (true) 
    { 
     CheckToMakeSureSpawnedThreadsAreRunningOK(); 
     System.Threading.Thread.Sleep(10000); 
    } 
} 

टिप्पणी में smarx से उल्लेख किया है, यह भी पाश के बजाय System.Threading.Thread.Sleep(Timeout.Infinite) उपयोग करने के लिए संभव हो जाएगा।

+1

लूप के बजाए, थ्रेड क्यों नहीं। सो जाओ (टाइमआउट.इंटर)? – smarx

+0

मुख्य रूप से क्योंकि मैंने इसके बारे में नहीं सोचा था। जब आप एक जोड़ते हैं तो मूल भूमिका में अनंत लूप होता है। यह भी माना जाता है कि इसमें एक ट्रेस संदेश भी है जो हर एक्स सेकंड में लिखा जाता है ताकि आपको यह बताने के लिए कि भूमिका अभी भी चल रही है।जब मैं अपनी शुरुआती कार्यकर्ता भूमिकाओं में से एक बना रहा था तो मैंने लूप को भी देखा और "समय की बर्बादी" सोच ली और इसे हटा दिया। यहां एक समस्या का कारण बन रहा है जैसे कि यहां क्या अनुभव किया जा रहा है। – knightpfhor

10

लूप इन रन() कम से कम एमुलेटर संस्करण 1.6 या उच्चतर में आवश्यक नहीं है। हालांकि मुझे आज भी यही समस्या मिली है। मैंने यह जानने के लिए कुछ घंटे बिताए कि कारण क्या हो सकता है और पाया कि मेरी परियोजना माइक्रोसॉफ्ट के संदर्भों का उपयोग करती है। विन्डोज़। एज़ूर असेंबली संस्करण 1.7 और मैं जिस एमुलेटर का उपयोग करता हूं वह अक्टूबर संस्करण (1.8) से है। वेब प्रोजेक्ट ठीक काम करते हैं लेकिन प्रक्रिया कार्यकर्ता भूमिकाएं शुरू हो रही हैं और आपके द्वारा वर्णित तुरंत रोक रही हैं। ऑनस्टार्ट, रन और ऑनस्टॉप को अभी नहीं कहा जाता है। जब मैंने अपनी कार्यकर्ता भूमिका को 1.8 असेंबली में संदर्भित किया तो यह फिर से काम करना शुरू कर दिया। कुछ और घंटों बर्बाद हो गए, धन्यवाद माइक्रोसॉफ्ट ...

+0

आपने मुझे कुछ घंटे की जांच @ एलेक्सी बचाई है। धन्यवाद! :) http://stackoverflow.com/questions/19253015/will-azure-find-my-roleentrypoint-implementation-class-if-thats-the-direct-clas/19253556#19253556 – rui

+0

आपका स्वागत है, यह वास्तविक है Azure एसडीके संस्करणों के साथ सिरदर्द। –

+0

मैंने देखा कि यह एमएसडीएन से स्थानीय रूप से डाउनलोड किए गए नमूने को चला रहा है। माइक्रोसॉफ्ट। WindowsAzure.ServiceRuntime संदर्भ 2.5.0.0 था जबकि 2.7.0.0 उपलब्ध है। संदर्भ को अपग्रेड करने से समस्या दूर हो गई। मैं आगे देखता हूं कि ऑनस्टार्ट और रन में फिक्स ब्रेकपॉइंट्स हिट नहीं होने से पहले। –

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

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