2009-06-03 12 views
45

मेरा SQL सर्वर CPU आज के अधिकांश भाग के लिए लगभग 9 0% रहा है।मैं कैसे पता लगा सकता हूं कि मेरा SQL सर्वर क्या है?

मैं की स्थिति में नहीं हूं कि यह निरंतर उपयोग में होने के कारण पुन: प्रारंभ करने में सक्षम हो।

क्या यह पता लगाना संभव है कि एसक्यूएल के भीतर ऐसा सीपीयू ओवरलोड क्यों हो रहा है?

मैं एसक्यूएल प्रोफाइलर चलाने की है, लेकिन यह करता है, तो विशेष रूप से कुछ भी यह खड़ी कर रहा है यह बताने के लिए मुश्किल है पर इतना जा रहा है।

मैं sp_who2 चलाने लेकिन यकीन है कि क्या सब कुछ बिल्कुल मतलब है नहीं कर रहा हूँ और अगर यह संभव हो सकता है यहाँ में संभव समस्याओं की पहचान करने की है।

किसी भी करने के लिए पहले कार्रवाई "यह शायद सिर्फ इस्तेमाल किया जा रहा एक बहुत" प्रतिक्रियाएं, यह केवल पूरी तरह से सामान्य activitly स्तर से आज में लात मारी है।

मैं एसक्यूएल के भीतर सीपीयू दुःख पैदा करने के किसी भी तरीके से ढूंढने के बाद हूं।

+0

आप serverfault.com –

+1

शायद के बारे में अधिक उपयोगी जवाब मिल सकता है। यह पेर्फ ट्यूनिंग भी हो सकता है हालांकि – gbn

+0

आह, हाँ, मैंने serverfault.com को सोचा था, लेकिन मुझे नहीं लगता था कि यह अभी तक चल रहा था और चल रहा था! – joshcomley

उत्तर

21

मैं यहाँ कारण परिश्रम मान लें कि आप सीपीयू की पुष्टि की वास्तव में एसक्यूएल प्रक्रिया द्वारा सेवन किया जाता है (परफॉर्म प्रोसेस श्रेणी काउंटर इसकी पुष्टि करेंगे)। आम तौर पर ऐसे मामलों के लिए आप प्रासंगिक प्रदर्शन काउंटर का नमूना लेते हैं और आप उन्हें सामान्य आधार परिचालन स्थितियों में स्थापित आधार रेखा से तुलना करते हैं। एक बार जब आप इस समस्या को हल कर लेंगे तो मैं आपको भविष्य की तुलना के लिए ऐसी आधारभूत आधार स्थापित करने की सलाह देता हूं।

आप यह पता लगा सकते हैं कि एसक्यूएल प्रत्येक एकल चक्र चक्र कहां खर्च कर रहा है।लेकिन यह जानना कि कहां देखना है, कितना पता चलता है और अनुभव करता है। एसक्यूएल 2005/2008 या 2000 है? सौभाग्य से 2005 के लिए और नए शेल्फ समाधानों में से कुछ हैं। जॉन सैमसन के जवाब के साथ आपको पहले से ही कुछ अच्छा पॉइंटर मिला है। मैं SQL Server Performance Dashboard Reports को डाउनलोड और इंस्टॉल करने के लिए एक सिफारिश जोड़ना चाहता हूं। इनमें से कुछ रिपोर्टों में समय या आई/ओ द्वारा सबसे अधिक प्रश्न शामिल हैं, सबसे अधिक उपयोग की जाने वाली डेटा फाइलें और इसी तरह और आप जल्दी से महसूस कर सकते हैं कि समस्या कहां है। आउटपुट संख्यात्मक और ग्राफिकल दोनों है इसलिए यह शुरुआत के लिए अधिक उपयोगी है।

मैं भी Adam's Who is Active स्क्रिप्ट का उपयोग कर की सिफारिश करेंगे कि हालांकि थोड़ा और अधिक उन्नत है। SQL 2005 Waits and Queues:

और अंत में कम से कम मैं तुम्हें डाउनलोड करने और प्रदर्शन विश्लेषण पर एमएस एसक्यूएल ग्राहक सलाहकार टीम श्वेत पत्र पढ़ें सलाह देते हैं।

मेरे सिफारिश भी आई/ओ को देखने के लिए है। यदि आपने सर्वर पर एक लोड जोड़ा है जो बफर पूल को ट्रैश करता है (यानी इसे इतना डेटा चाहिए कि यह कैश किए गए डेटा पृष्ठों को स्मृति से दिखाता है) परिणाम सीपीयू में महत्वपूर्ण वृद्धि होगी (आश्चर्यजनक लगता है, लेकिन सच है)। अपराधी आमतौर पर एक नई क्वेरी है जो एक बड़ी तालिका को अंत तक स्कैन करता है।

+2

+1 और आप इस लिंक (http://www.microsoft.com/en-us/download/details.aspx?id=29063 उपयोग कर सकते हैं) 'एसक्यूएल सर्वर प्रदर्शन डैशबोर्ड रिपोर्ट' के नए संस्करण के लिए। – gotqn

5

इनमें से किसी भी अन्य को अलग करें। आप उच्च CPU कनेक्शन का पता लगाएंगे। या: एक स्थानीय चर, WAITFOR देरी में संग्रहीत सीपीयू, संग्रहीत तुलना और वर्तमान CPU

select * from master..sysprocesses 
where status = 'runnable' --comment this out 
order by CPU 
desc 

select * from master..sysprocesses 
order by CPU 
desc 

को महत्व देता है सबसे सुंदर नहीं हो सकता, लेकिन यह प्रभावी और त्वरित चाहते।

+0

हाय धन्यवाद, मैं ऐसा ही किया और यह LOGMGR_QUEUE cpu स्तंभ के साथ वापस आ 20296. पर किया जा रहा है क्या इकाई में यह आंकड़ा है आया था? – joshcomley

+0

मिलीसेकंड। यह कम – gbn

+0

है यह एक Waittype भी है ...? – gbn

3

एक जीयूआई दृष्टिकोण के लिए मैं प्रबंधन के तहत गतिविधि मॉनिटर पर नजर डालेंगे और सीपीयू द्वारा क्रमबद्ध करता हूं।

+3

उम्मीद है कि जीयूआई लोड किए गए SQL सर्वर बॉक्स पर होने वाली "लॉक टाइमआउट" त्रुटि के साथ समय नहीं लगेगा ... – gbn

+0

निश्चित रूप से, लेकिन मैंने सुझाव दिया क्योंकि मैंने निम्नलिखित यादृच्छिक चरित्र का अनुभव किया है: CPU महत्वपूर्ण !!!! ! मी: सिस्टम टेबल के लिए नौकरी की तरह लगता है! <लेखन क्वेरी उग्र रूप से> मुझे नहीं: इसके बारे में चिंता न करें, मैंने गतिविधि मॉनीटर में अपराधी को पाया और मार डाला। – cmsjr

+0

तो फिर यह क्या था? –

4

आप एसक्यूएल प्रोफाइलर चला सकते हैं, और CPU या अवधि के आधार पर फिल्टर, ताकि आप सभी "छोटे सामान" बहिष्कृत कर रहे हैं। फिर यह निर्धारित करना बहुत आसान होना चाहिए कि क्या आपको एक विशिष्ट संग्रहित प्रो जैसी समस्या है जो इसे लंबे समय से चल रहा है (लापता इंडेक्स या कुछ हो सकता है)।

दो चेतावनियां:

  • यदि समस्या छोटे लेन-देन की भारी मात्रा में है, तो फिल्टर मैं ऊपर का वर्णन उन्हें बहिष्कृत कर देगा, और आप इस याद आती होगी।
  • इसके अलावा, अगर समस्या एक एकल, बड़े पैमाने पर काम तो आप प्रोफाइलर में यह नहीं देख सकता है (एक 8 घंटे विश्लेषण नौकरी या एक खराब तरीके से तैयार एक अरब पंक्तियों पार शामिल होने के लिए है कि चयन की तरह) है जब तक यह पूरी तरह से है क्या किया गया है, इस पर निर्भर करता है कि आप कौन सी घटनाएं प्रोफाइल कर रहे हैं (एसपी: पूर्ण बनाम एसपी: कथनबद्ध)।

लेकिन आम तौर पर मैं गतिविधि मॉनीटर या sp_who2 से शुरू करता हूं।

+1

धन्यवाद, मुझे लगता है कि यह सबसे अच्छा विकल्प है। – Salim

78

इस क्वेरी DMV का उपयोग करता सीपीयू

SELECT TOP 20 
    qs.sql_handle, 
    qs.execution_count, 
    qs.total_worker_time AS Total_CPU, 
    total_CPU_inSeconds = --Converted from microseconds 
     qs.total_worker_time/1000000, 
    average_CPU_inSeconds = --Converted from microseconds 
     (qs.total_worker_time/1000000)/qs.execution_count, 
    qs.total_elapsed_time, 
    total_elapsed_time_inSeconds = --Converted from microseconds 
     qs.total_elapsed_time/1000000, 
    st.text, 
    qp.query_plan 
FROM 
    sys.dm_exec_query_stats AS qs 
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) AS st 
CROSS APPLY 
    sys.dm_exec_query_plan (qs.plan_handle) AS qp 
ORDER BY 
    qs.total_worker_time DESC 

तक का सबसे महंगा क्वेरी की पहचान करने के लिए एक पूर्ण विवरण के लिए देखें: How to identify the most costly SQL Server queries by CPU

+1

क्या यह सिस्टम से संबंधित है: वीएलएफ, चेकपॉइंटिंग, आंकड़े पुनर्निर्माण आदि – gbn

+2

सबसे उपयोगी एसक्यूएल का टुकड़ा मैं एक लंबे समय में इस्तेमाल किया है। अपनी बट सहेजा गया। धन्यवाद! –

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

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