मेरे पास Azure पर एक वेब एपीआई ऐप चल रहा है। मैं हर सुबह 2:00 AM पर एक शेड्यूलर जॉब चलाता हूं जो बहुत सारे हैंगफायर जॉब बनाता है।

इस समय, वेब एपी ऐप में केवल एक उपलब्ध इंस्टेंस है जो सीपीयू मेट्रिक्स के आधार पर स्केल आउट करने के लिए कॉन्फ़िगर किया गया है। ये चल रहे हैंगफायर जॉब सीपीयू प्रतिशत को सीमा तक बढ़ाते हैं और एपीआई ऐप के नए उपलब्ध इंस्टेंस बनाते हैं।

दुर्भाग्य से, मुझे ऐसा लगता है कि दी गई हैंगफायर नौकरी उस उदाहरण पर चलती है जिसने इसे बनाया है। मैं सभी उपलब्ध उदाहरणों पर नौकरी भेजने के लिए हैंगफायर को कैसे कॉन्फ़िगर कर सकता हूं?

2
PMerlet 1 पद 2017, 17:19
जब आप क्लाउड पर अपना एप्लिकेशन चलाते हैं, तो कृपया Hangfire जॉब के बजाय एज़्योर फ़ंक्शंस पर विचार करें। यह एक बेहतर तरीका होना चाहिए: docs.microsoft.com/en -us/azure/azure-functions/…. उदाहरण: Azure स्वचालित रूप से आपके लिए स्केल करता है, यदि आप उपभोग योजना का उपयोग करते हैं, तो आप केवल उस समय के लिए भुगतान करेंगे जब आपका कोड चलता है,...
 – 
Khanh TO
9 पद 2017, 05:56

2 जवाब

दुर्भाग्य से, मुझे ऐसा लगता है कि दी गई हैंगफायर नौकरी उस उदाहरण पर चलती है जिसने इसे बनाया है। मैं सभी उपलब्ध उदाहरणों पर नौकरी भेजने के लिए हैंगफायर को कैसे कॉन्फ़िगर कर सकता हूं?

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

Enumerable.Range(11, 30).ForEach(i =>
{
    BackgroundJob.Enqueue(() => Console.WriteLine($"[Task-{i}] Getting Started with HangFire!"));
});

फिर, कंसोल एप्लिकेशन में नौकरियों को निम्नानुसार संसाधित करना:

using (var server = new BackgroundJobServer())
{
    Console.WriteLine("Hangfire Server started. Press any key to exit...");
    Console.ReadKey();
}

मैंने दो सर्वर इंस्टेंस शुरू किए और मुझे निम्नलिखित परिणाम मिले:

enter image description here

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

3
Bruce Chen 4 पद 2017, 12:51
मैंने पहले ही वेब एपीआई और एज़ूर पर वीएम का उपयोग करके नौकरियों के वितरण को देखा है। ऑटोस्केल के लिए कॉन्फ़िगर किए गए केवल एक वेब एपीआई का उपयोग करते समय, मुझे कोई प्रेषण नहीं दिखाई दिया, लेकिन मैं इसे पुनः प्रयास करूंगा।
 – 
PMerlet
4 पद 2017, 13:03

मुझे लगता है कि यह व्यवहार इस पुल अनुरोध से जुड़ा हो सकता है, जो शून्य-विलंबता कार्य संसाधन जोड़ता है जब नौकरी कतारबद्ध और उसी उदाहरण पर संसाधित की जाती है।

जब भी हम कतार में नई नौकरी जोड़ते हैं, तो कोड को देखते हुए मुझे लगता है कि हम WaitAny इवेंट के लिए Set हैं। फिर हम फिर से कतार से नौकरी लाने की कोशिश करते हैं। यह नौकरी की विलंबता को कम करता है क्योंकि इसे जल्दी उठाया जाता है।

मेरी परिकल्पना यह है कि जब भी वर्तमान उदाहरण व्यस्त होगा, तो कई कार्य आपके अन्य उदाहरण में वितरित हो जाएंगे।

0
starteleport 10 पद 2017, 20:13