हम VB.NET श्रोताओं के साथ एक समस्या का सामना कर रहे हैं जो सर्वर मशीन में उच्च CPU (50% से 70%) का उपयोग करता है जहां यह चल रहा है। श्रोता एक थ्रेडिंग अवधारणा का उपयोग कर रहे हैं और हम भी उपयोग करते हैं FileSystemWatcher
नाम बदलने की निगरानी रखने के लिए क्लासएक सामान्य स्थान की ओर इशारा करते हुए। दोनों पूरे दिन चलने वाले कंसोल एप्लिकेशन और शेड्यूल किए गए कार्य हैं। क्या आप कृपया मेरी मदद कर सकते हैं कि इसके साथ सीपीयू उपयोग को कैसे नियंत्रित किया जाए FileSystemWatcher
कक्षा?
उत्तर:
उत्तर № 1 के लिए 1यह सब आपके द्वारा चलाए जा रहे कोड पर निर्भर कर सकता है।
उदाहरण के लिए, यदि आपके पास 10ms के अंतराल के साथ एक टाइमर है, लेकिन केवल हर 2 मिनट में काम करते हैं और प्रत्येक टाइमर अंतराल पर आप बहुत सारे चेकिंग करते हैं, तो कुछ भी नहीं करने के लिए बहुत अधिक CPU लगेगा।
यदि आप कई थ्रेड का उपयोग कर रहे हैं और एक हैलूपिंग 2 के लिए लॉक (मॉनीटर। ट्राइटर ()) जारी करने का इंतजार कर रहा है, फिर से यह अतिरिक्त सीपीयू ले सकता है। आप वेटिंग थ्रेड को Monitor.Wait () में डालकर और इसके बाद बिजी थ्रेड समाप्त होने पर Monitor.Pulse () में आने से बच सकते हैं।
उपरोक्त बहुत सामान्य सलाह के अलावा, यदि आप अपने कोड या प्रोफ़ाइल परिणामों के प्रमुख भागों को पोस्ट करते हैं तो हम अधिक मदद करने में सक्षम हो सकते हैं।
यदि आप एक प्रोफाइलर की तलाश में हैं तो हम RedGates का उपयोग करते हैंANTS प्रोफाइलर (लागत लेकिन एक नि: शुल्क परीक्षण के साथ) और यह अच्छे परिणाम देता है, मैंने तुलना करने के लिए किसी भी अन्य का उपयोग नहीं किया (और मैं रेडगेट से संबद्ध नहीं हूं) इसलिए अन्य बेहतर हो सकते हैं।
आशा है कि इससे कुछ मदद मिलेगी।