2015-02-27 6 views
9

मैं एक Azure WebJob निम्न लॉग उत्पादन के साथ चलाने का केवल 20 मिनट के बाद विफल रहता है:WebJob रन के कारण विफल थ्रेड निरस्त किया जा रहा था

[02/27/2015 00:30:11 > 3e9b72: SYS INFO] Status changed to Initializing 
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Run script 'Namespace.Class.DataProcessor.exe' with script host - 'WindowsScriptHost' 
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Status changed to Running 
[02/27/2015 00:30:23 > 3e9b72: INFO] Found the following functions: 
[02/27/2015 00:30:23 > 3e9b72: INFO] Namespace.Class.DataProcessor.Functions.ManualTrigger 
[02/27/2015 00:30:23 > 3e9b72: INFO] Executing: 'Functions.ManualTrigger' because This was function was programmatically called via the host APIs. 
[02/27/2015 00:51:35 > 3e9b72: ERR ] Thread was being aborted. 
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] WebJob process was aborted 
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Stopped 
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Failed 
[02/27/2015 00:51:35 > 3e9b72: SYS ERR ] WebJob run failed due to: System.Threading.ThreadAbortException: Thread was being aborted. 
    at Kudu.Core.Jobs.BaseJobRunner.RunJobInstance(JobBase job, IJobLogger logger, String runId) 
    at Kudu.Core.Jobs.TriggeredJobRunner.<>c__DisplayClass2.<StartJobRun>b__0(Object _) 

यह करने के लिए समय पर है दिन में एक बार शुरू करें जब सिस्टम शांत हो और 20 मिनट के बाद यह उस त्रुटि से विफल हो जाए। यह त्रुटि तब होती है जब शेड्यूलर द्वारा स्वचालित रूप से ट्रिगर किया जाता है। यदि साइट के नीचे Azure WebJob पैनल से मैन्युअल रूप से ट्रिगर किया गया है तो इसमें कोई त्रुटि नहीं है, यह कई घंटों तक चलता है।

नौकरी आवेदन एक '।' आउटपुट करता है। Azure को यह सोचने से रोकने के लिए हर कुछ कदम है कि यह निष्क्रिय है। मैं भी वेबसाइट है, जहां काम चलाता है जो यह समय बाहर से रोकता है पर निम्न सेटिंग्स कॉन्फ़िगर कर दिया है अगर यह कुछ समय लगता है लॉग में उत्पादन कुछ प्रतिक्रिया देने या करने के लिए:

WEBJOBS_IDLE_TIMEOUT = 14400 SCM_COMMAND_IDLE_TIMEOUT = 14400

काम कार्रवाई एक पोस्ट है नौकरी को ट्रिगर करने का अनुरोध जो मुझे संदेह है वह वही तंत्र है जो नौकरी को मैन्युअल रूप से शुरू करता है (और समय समाप्त नहीं होता है)।

मैं इसे 20 मिनट के बाद विफल होने से कैसे रोक सकता हूं? नौकरी को 20 मिनट से अधिक समय तक चलाने की अनुमति देने के लिए मुझे किस सेटिंग को बदलने/जोड़ने की आवश्यकता है?

+0

क्या आपने कभी इसे हल किया है? मेरे साथ भी वही दिक्कत है। – jrummell

+0

यह संबंधित प्रतीत होता है - http://stackoverflow.com/questions/27939766/long-running-web-job-being-aborted-by-azure – jrummell

+2

@jrummell मेरा समाधान नौकरी को अधिक केंद्रित कार्यों में चलाने और चलाने के लिए था उन्हें अधिक बार बार-बार बनाया गया डेटा की मात्रा होती है जो इसे इतनी देर तक ले जाती है। अब कार्यों में 10 मिनट से अधिक समय नहीं लगता है इसलिए वे बंद नहीं होते हैं। "हमेशा चालू" समाधान का परीक्षण करेंगे और फिर शायद "stopping_wait_time" सेटिंग भी देखेंगे और देखें कि यह काम करता है या नहीं। – BrutalDev

उत्तर

-1

सुनिश्चित करें कि आप "हमेशा चालू" सेटिंग सक्षम के साथ अपनी वेबसाइट को कॉन्फ़िगर करने के लिए कॉन्फ़िगर करें। इसके लिए एक मानक स्तर की वेबसाइट की आवश्यकता है (मुफ्त साइटों में उपलब्ध नहीं है)। documentation से:

हमेशा चालू। डिफ़ॉल्ट रूप से, वेब ऐप्स अनलोड किए जाते हैं यदि वे कुछ अवधि के लिए निष्क्रिय हैं। यह सिस्टम को संसाधनों को संरक्षित करने देता है। बेसिक या मानक मोड में, आप ऐप को सभी समय लोड करने के लिए हमेशा चालू कर सकते हैं। यदि आपका ऐप निरंतर वेब नौकरियां चलाता है, तो आपको हमेशा चालू करना चाहिए, या वेब नौकरियां विश्वसनीय रूप से नहीं चल सकती हैं।

+0

प्रश्न में साइट में यह सेटिंग सक्षम है। जिस तरह से एज़ूर वेब जॉब्स ट्रिगर किए जाते हैं, वे जीईटी/पोस्ट से होते हैं, इसलिए यह साइट को तब तक जगाएगा, भले ही इसे हैंगफायर जैसी आंतरिक शेड्यूलिंग सिस्टम के विपरीत अनलोड किया गया हो। इस सेटिंग को होने से त्रुटि को रोका नहीं जा सकता है, यह वास्तविक ट्रिगरिंग अनुरोध से संबंधित है जो टाइमआउट को बढ़ाने का कोई स्पष्ट तरीका पूरा करने के लिए 20 मिनट से अधिक समय लेता है। – BrutalDev

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

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