2013-09-06 4 views
5

मेरे पास लंबे समय से चलने वाले PowerShell script workflow हैं जिन्हें -AsJob पैरामीटर का उपयोग करके नौकरी के रूप में बुलाया जाता है। यह समय-समय पर चेतावनियों और आउटपुट संदेशों को लिखता है जिन्हें Retrieve-Job सेमीडलेट का उपयोग करके पुनर्प्राप्त करने की आवश्यकता होगी।अगर मुझे यह प्राप्त नहीं होता है तो PowerShell कितना जॉब आउटपुट होगा?

मुझे उत्सुकता है कि PowerShell इस नौकरी आउटपुट को संग्रहीत करता है जिसे अभी तक पुनर्प्राप्त नहीं किया गया है और यदि व्यावहारिक ऊपरी सीमा है। यदि ऐसा है, तो क्या यह स्वचालित रूप से फीफो तरीके से नौकरी आउटपुट को शुद्ध करेगा? दुर्घटना?

उत्तर

6

मैं अगर यह वास्तव में आपके सवाल का जवाब पता नहीं है, लेकिन मैं Start-Job आदेशों सिर्फ एक बड़ी संख्या एक 1 से एक श्रेणी बनायी की एक किस्म की कोशिश की - सबसे स्मृति अपवाद के बाहर दिया था, लेकिन मैं अंत में मिला एक पूरा होने से काम करने के लिए:

# these all bombed out 
Start-Job -ScriptBlock { 1..4000000000 } 
Start-Job -ScriptBlock { 1..2000000000 } 
Start-Job -ScriptBlock { 1..1000000000 } 
# this one finally started evaluating 
Start-Job -ScriptBlock { 1..100000000 } 

मैं इसे थोड़ी देर के लिए चलाते हैं और यह एक पूर्ण सीपीयू कोर अप खा लिया, जबकि यह रेंज का मूल्यांकन किया गया था। यह टास्क मैनेजर के अनुसार लगभग 5 जीबी रैम का उपयोग कर समाप्त हो गया था और उस बिंदु पर भौतिक स्मृति से बाहर निकलने के लिए और अधिक इस्तेमाल किया होता। सीपीयू का उपयोग गिरा दिया गया क्योंकि ओएस को पागल की तरह पेजिंग मेमोरी शुरू करना पड़ा था।

जैसा कि आप नीचे दिए गए स्क्रीनशॉट में देख सकते हैं, वास्तव में यह एक और powerhell.exe प्रक्रिया उत्पन्न करता है - इसलिए मुझे लगता है कि नौकरी चलने के दौरान डेटा को स्टोर करने के लिए आंशिक रूप से आपके प्रश्न का उत्तर देता है। ऐसा लगता है कि एक व्यावहारिक सीमा है जो उपलब्ध संसाधनों पर निर्भर करती है। PowerShell नौकरी बफर में जानकारी को शुद्ध या अन्यथा खो नहीं देगा (जब तक कि दूसरी प्रक्रिया दुर्घटनाग्रस्त न हो?) लेकिन यह भी उतना डेटा पुनर्प्राप्त करने में समस्याग्रस्त हो सकता है। आप कुछ परीक्षण रन करना चाहते हैं और देख सकते हैं कि स्वीकार्य और व्यावहारिक सीमाएं क्या हैं जिन्हें आपके पर्यावरण द्वारा समर्थित किया जा सकता है।

नोट: 1..100000 जैसी बहुत छोटी रेंज का उपयोग, सिस्टम को पूरी तरह से जबरदस्त नहीं करते हुए व्यवहार का निरीक्षण करने के लिए पर्याप्त रिकॉर्ड प्रदान करता है। मैंने यह देखने के लिए बड़ी संख्या का उपयोग किया कि व्यावहारिक सीमाएं क्या हैं।

Task Manager showing powershell.exe using a lot of memory

+1

उत्तर के लिए धन्यवाद। मुझे लगता है कि मैं अभी भी 100% स्पष्ट नहीं हूं कि PowerShell निलंबित वर्कफ़्लो के साथ क्या करता है (जो मुझे लगता है कि नियमित नौकरियों से थोड़ा अलग है)। चूंकि वे रीबूट से बच सकते हैं और फिर से शुरू हो सकते हैं, इसलिए इसे कतारबद्ध नौकरी आउटपुट भी जारी रखना चाहिए। लेकिन ऐसा लगता है कि स्मृति/प्रक्रिया सीमाओं के अलावा कोई वास्तविक ऊपरी सीमा नहीं है। आपके इनपुट के लिए धन्यवाद। – Josh

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

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