एसी # सेवा जिसे मैंने कभी-कभी अधिकृत किया है वह कभी-कभी वीएम पर शुरू नहीं होती है जो बूट कर रहे हैं - हम देखते हैं कि "लॉग इन करने के लिए सेवा का इंतजार करते समय" एक टाइमआउट पहुंच गया था।
अंतर्निहित मुद्दा वही है जो इस समान एसओ प्रश्न में वर्णित है - लेकिन यहां अंतर यह है कि मेरे पास सभी विफलताओं पर सेवा को पुनरारंभ करने के लिए सेवा पर पुनर्प्राप्ति विकल्प सेट हैं। इस पुनर्प्राप्ति प्रक्रिया को ट्रिगर नहीं किया जा रहा है, हालांकि - जब ऐसा होता है, तो बूटअप पूरा होने के बाद भी सेवा को मैन्युअल रूप से शुरू किया जाना चाहिए।
क्या रिकवरी विकल्प केवल हार्ड सर्विस क्रैश पर ट्रिगर होता है, और स्टार्टअप टाइमआउट पर नहीं?
मैं log4net का उपयोग करता हूं और ऐसा होने पर शून्य लॉग प्रविष्टियां देखता हूं, इसलिए मुझे विश्वास नहीं है कि टाइमआउट हिट होने से पहले मेरे किसी भी लेखक कोड को निष्पादित किया जा रहा है (इसलिए ServiceBase.RequestAdditionalTime या WinAPI के SetServiceStatus का उपयोग करने के लिए कोई प्रभाव नहीं होगा)।
यह मानते हुए कि यह .NET फ्रेमवर्क के साथ कुछ अंतर्निहित मुद्दा है या इसी तरह बहुत धीमी गति से शुरू हो रहा है (यानी भौतिक प्रणाली संसाधन या I / O विवाद कई VMs एक साथ शुरू होते हैं), क्या मुझे पता लगाने के लिए एक हल्के C ++ वॉचडॉग-प्रकार सेवा को लेखक की आवश्यकता होगी इस समस्या और तथ्य के बाद सेवा को पुनः आरंभ करने का प्रयास करें?
अधिक जानकारी: यह सेवा एक वीएम पर थी जिसने विंडोज अपडेट को स्थापित करने के लिए दो बार रिबूट किया। पहले रीबूट के बाद सेवा ठीक-ठाक शुरू हो गई - लॉग स्टेटमेंट्स के आधार पर, सर्विस कंस्ट्रक्टर चलाने और ऑनस्टार्ट हैंडलर की शुरुआत के बीच ~ 1 सेकंड था, और सेवा 2 और सेकंड के भीतर शुरू हुई। दूसरे रीबूट पर, कोई लॉग एंट्री नहीं थी, बस इवेंट लॉग "एक टाइमआउट पहुँच गया था" त्रुटि, और निरीक्षण पर सेवा नहीं चल रही थी। दोनों रिबूट के बाद सफलतापूर्वक शुरू होने वाली एक अलग लेकिन समान .NET सेवा में दूसरी बार अधिक समय लगा, हालांकि - फिर से लॉग स्टेटमेंट के आधार पर, ~ रिबूट के बाद 0.7 सेकंड, और दूसरे के बाद 6 सेकंड।
( मूल रूप से StackOverflow पर पूछा गया था, मुझे यहाँ पूछने की सलाह दी गई थी)