2009-11-07 9 views
6

मेरे पास वर्तमान में एक django साइट है, और यह धीमी है, इसलिए मैं समझना चाहता हूं कि क्या हो रहा है।वेबसाइट के लिए प्रोफाइलिंग कैसे करें?

  • नेटवर्क
  • होस्टिंग मैं सर्वर साइड निष्पादन की जावास्क्रिप्ट
  • प्रभाव के
  • प्रभाव का उपयोग कर रहा की
  • प्रभाव (अजगर कोड का प्रभाव: मैं इसे इतना बीच अंतर करने के प्रोफ़ाइल कैसे) और एसक्यूएल पहुंच।
  • कोई अन्य प्रभाव जो मैं आज रात होने वाले बड़े सिरदर्द के कारण विचार नहीं कर रहा हूं।
बेशक

, उनमें से कुछ मैं फ़ायरबग उपयोग कर सकते हैं के लिए, लेकिन कुछ प्रभाव सहसंबद्ध होते हैं (उदाहरण के लिए जावास्क्रिप्ट धीमी गति से प्रकट हो सकते हैं, क्योंकि यह धीमी गति से नेटवर्क पहुँच कर रहा है)

धन्यवाद

उत्तर

5

ग्राहक के पक्ष: फ़ायरबग साथ

  • जांच करता है, तो/जो पृष्ठ के घटकों लोड करने के लिए लंबे समय से लेते हैं, और कितनी देर तक ब्राउज़र लोड हो रहा है पूरा होने के बाद पेज रेंडर करने के लिए की जरूरत है। अगर सब कुछ तेज़ है लेकिन प्रतिपादन अपना समय लेता है, तो शायद आपका एचटीएमएल/सीएसएस/जेएस समस्या है, अन्यथा यह सर्वर की तरफ है।

सर्वर साइड (मैं आप कुछ यूनिक्स एक जैसे सर्वर पर बैठने मान):

  • जांच एक छोटे से स्थिर सामग्री के साथ वेब सर्वर (एक छोटे से gif या एक छोटे से html पृष्ठ), अपाचे का उपयोग कर बेंच (एबी, अपाचे वेबसर्वर पैकेज का हिस्सा) या httperf, सर्वर प्रति सेकंड कम से कम 100 अनुरोधों का उत्तर देने में सक्षम होना चाहिए (बेशक यह आपकी परीक्षण सामग्री, वेबसर्वर प्रकार, हार्डवेयर और अन्य सामान के आकार पर भारी निर्भर करता है, इसलिए न करें उस 100 को गंभीरता से लें)। कि अगर अच्छा, ab या httperf एक "स्थिर दृश्य" पर साथ

  • परीक्षण Django (एक है कि एक डेटाबेस ऑब्जेक्ट का उपयोग नहीं करता है), अगर thats धीमी गति से लग रहा है यह एक संकेत है कि आप अधिक CPU शक्ति की जरूरत है। top के साथ सर्वर पर सीपीयू उपयोग की जांच करें। यदि यह ठीक है, तो वेब सर्वर पाइथन कोड

  • अर्ध-स्थैतिक सामग्री की सेवा करने के तरीके में समस्या ठीक हो सकती है, तो आपकी समस्या डेटाबेस या आईओ-बाउंड हो सकती है। डेटाबेस समस्याएं एक विस्तृत क्षेत्र हैं, यहां कुछ सामान्य सलाह दी गई है:

    • iostat के साथ i/o थ्रूपुट की जांच करें। यदि आप बहुत सारे लिखते हैं तो आपको बेहतर डिस्क उपप्रणाली, तेज छापे, एसएसडी हार्ड ड्राइव मिलते हैं .. या कम लिखने के लिए अपने आवेदन को अनुकूलित करें।
    • यदि इसके बहुत सारे पढ़ते हैं, तो होस्ट में फ़ाइल सिस्टम बफर के रूप में समर्पित पर्याप्त RAM नहीं हो सकता है, या आपके डेटाबेस प्रश्नों को अनुकूलित नहीं किया जा सकता है
    • यदि I/o ठीक दिखता है, तो डेटाबेस आपके लिए उपयुक्त नहीं हो सकता है वर्कलोड या सही तरीके से कॉन्फ़िगर नहीं किया गया है। धीमी गति से प्रश्नों प्रवेश कर और डेटाबेस गतिविधि की निगरानी, ​​ताले आदि आप कुछ विचार

दे सकता है अगर आप हमें पता है कि हार्डवेयर/सॉफ्टवेयर आप मैं और अधिक विस्तृत सलाह देने के लिए

संपादित सक्षम हो सकता है का उपयोग करते हैं/पीएस: एक बात भूल गई: निश्चित रूप से आपके ऐप में खराब डिज़ाइन हो सकता है और बहुत सारी अनावश्यक/अक्षम चीजें ...

3

पर एक नजर डालें Django debug toolbar - जो आपको सर्वर साइड कोड के साथ मदद करेगा (उदाहरण के लिए डेटाबेस क्वेरी क्या चलती है और उन्होंने कितनी देर तक लिया); और आमतौर पर Django विकास के लिए एक महान संसाधन है।

अन्य गैर-Django विशिष्ट बिट्स आप yslow के साथ प्रोफाइल कर सकते हैं।

+0

बेशक, आपको लाइव वेबसाइट पर इस प्रकार की प्रोफाइलिंग करना चाहिए, क्योंकि आम तौर पर यह वास्तविक डेटा है, लेकिन मुझे यह भी लगता है कि यह विशेष रूप से सुरक्षित नहीं है ... मानक समाधान क्या है? फर्जी प्रश्नों के साथ वेबसाइट पर हिट करें (मुझे याद है कि इसके लिए उपयोगिता है)? –

+0

आपको लाइव वेबसाइट पर django-debug-toolbar सामान नहीं करना है, हालांकि आप अपनी लाइव साइट पर yslow चलाने के लिए चाहते हैं। मैं विकास सर्वर के साथ django-debug-toolbar का उपयोग करता हूं। पूर्ण संख्याओं के लिए इसका उपयोग न करें ('x'' y' सेकेंड लेता है), लेकिन प्रश्नों के सापेक्ष समय आदि के लिए। यह विशेष रूप से काम करने के लिए उपयोगी होता है यदि कोई विशेष दृश्य इसकी तुलना में अधिक डेटाबेस क्वेरी जारी कर रहा है। –

1

कई टूल हैं, लेकिन इस तरह की समस्याएं खोजने में मुश्किल नहीं हैं क्योंकि वे बड़े हैं।

आपको कोई समस्या है, और जब आप इसे हटाते हैं, तो आपको एक गति का अनुभव होगा। मान लीजिए कि गति कुछ कारक है, जैसे 2x। इसका मतलब है कि कार्यक्रम धीमे हिस्से की प्रतीक्षा में अपने समय का 50% खर्च कर रहा है। मैं जो करता हूं वह सिर्फ कुछ बार रोकता है और देखता है कि यह किस चीज की प्रतीक्षा कर रहा है। इस मामले में, मैं इसे रोकने के 50% समस्या को देखता हूं।

सबसे पहले मैं इसे क्लाइंट पक्ष पर करूँगा। अगर मुझे लगता है कि 50% सर्वर के लिए इंतजार कर रहा है, तो मैं इसे सर्वर की तरफ रोकना चाहूंगा। तो अगर मुझे लगता है कि यह एसक्यूएल प्रश्नों की प्रतीक्षा कर रहा है, तो मैं उन पर देख सकता हूं।

मुझे यह पता लगाने के लिए लगभग निश्चित है कि वास्तव में आवश्यकतानुसार अधिक काम का अनुरोध किया जा रहा है। यह आमतौर पर "हॉटस्पॉट" या "एल्गोरिदम" की तरह गूढ़ कुछ नहीं होता है। आमतौर पर यह गूंगा होता है, जैसे कि कोई भी पर्याप्त होता है, ताकि कोई भी पर्याप्त होता, ताकि परिणाम को पहली क्वेरी से परिणाम सहेजने के लिए कोड लिखने से बचें।

Here's an example.

0

पहले पहली बातें; सुनिश्चित करें कि आप जानते हैं कि कौन से पृष्ठ धीमे हैं। आप आश्चर्यचकित हो सकते हैं। मैं django_dumpslow की सलाह देते हैं।

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