6

मैंने कुछ हफ्ते पहले this question से पूछा। आज मैंने वास्तव में एक मानक Django आवेदन लिखा है और जारी किया है, यानी Google CloudSQL द्वारा सक्षम एक पूर्ण-कार्यात्मक संबंध डीबी समर्थित (और इसके परिणामस्वरूप पूरी तरह से कार्यात्मक Django व्यवस्थापक)। एकमात्र बार मुझे चीजों को करने से विचलित होना पड़ा मानक डीजेंगो रास्ता ईमेल भेजना था (इसे जीएई रास्ता करना था)। मेरे सेटअप app.yaml में निम्नलिखित का उपयोग कर GAE 1.6.4, Python2.7, Django 1.3 है:GoogleAppEngine पर Django: प्रदर्शन कैसे करें

libraries: 
- name: django 
    version: "1.3" 

हालांकि मैं क्या ज़रूरत है आप प्रारंभिक अनुरोध इस Django app की जब ठंड की प्रतिक्रिया समय को बेहतर बनाने के लिए स्पष्ट कार्रवाई योग्य चरणों का सुझाव देना। मेरे पास GAE पर एक साधारण webapp2 वेब साइट है, जो डीबी हिट नहीं करती है, और जब ठंड प्रतिक्रिया समय 1.56s है। Django एक, जब ठंड, दो प्रश्नों के साथ डीबी को हिट करता है (दो count(*) प्रत्येक पंक्ति में 300 से कम पंक्तियों वाले प्रश्नों पर प्रश्न), और प्रतिक्रिया समय 10.73s है! होम पेज के लिए प्रोत्साहित नहीं;)

जो चीजें दिमाग में आती हैं उन्हें middleware कक्षाओं को हटाने की आवश्यकता नहीं है और अन्य Django- विशिष्ट अनुकूलन। हालांकि जीएई दृष्टिकोण से चीजों को बेहतर बनाने वाली युक्तियां वास्तव में उपयोगी होंगी।

एनबी। मैं नहीं चाहता कि यह GAE पर Django के लिए जाने की योग्यता के बारे में चर्चा हो। मैं उल्लेख कर सकता हूं कि मेरी निजी Django विशेषज्ञता, और परिणामी विकास उत्पादकता, अन्य ढांचे के विपरीत Django को अपनाने में काफी सहन किया। इसके अलावा क्लाउड एसक्यूएल के साथ, जीएई से दूर जाना आसान है (उम्मीद है कि नहीं!) क्योंकि Django कोड छोटे (या नहीं) संशोधनों के साथ हर जगह काम करेगा। इस विषय के बारे में संबंधित चर्चा here और here मिल सकती है।

+0

एप्लिकेशन गर्म होने पर मुखपृष्ठ का प्रतिक्रिया समय क्या है? –

+0

आपने पहले ही क्या प्रोफाइल किया है? – DrTyrsa

+0

@DanielRoseman यह '200ms' के आसपास औसत है, जो उत्कृष्ट है। –

उत्तर

2

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

मैंने देखा है कि मैंने GAE/Python/Django से संबंधित मेलिंग सूचियों में से एक में चर्चा की है कि वेबैप की तुलना में सभी Django फ़ाइलों को लोड करने के लिए आवश्यक समय महत्वपूर्ण है, इसलिए django घटकों को हटा दें जो आप नहीं करते तैनाती से उपयोग आपके स्टार्टअप समय में भी सुधार करना चाहिए। मैं contrib फ़ोल्डर के कुछ हिस्सों को हटाकर लगभग 3 सेकंड दाढ़ी करने में सक्षम हूं। मैं उन्हें अपने ऐप में छोड़ देता हूं। वाईएमएल।

मेरा स्टार्टअप समय अभी भी लगभग 6 सेकंड (पूर्ण ऐप, Django-nonrel, एचआरडी) है। जब मेरा ऐप आसान था तो यह 4 की तरह होता था।

मेरा संदेह यह है कि Django स्टार्टअप पर अपने सभी मॉडल सत्यापित करता है, और प्रसंस्करण समय महत्वपूर्ण है। यदि आपके पास बिल्कुल 0 मॉडल वाले ऐप के साथ प्रयोग करने का समय है, तो अगर यह कोई प्रभाव डालता है तो मैं उत्सुक हूं।

मैं भी उत्सुक हूं कि आपके दो प्रारंभिक प्रश्न कोई महत्वपूर्ण प्रभाव डालते हैं या नहीं।

+0

इसके लिए वार्मअप अनुरोध तैयार किए गए हैं - इसे करने के लिए cronjob की कोई आवश्यकता नहीं है। –

+0

@dragonx समस्या Django से भारी और क्लाउडएसक्यूएल पूछताछ से संबंधित होना चाहिए ... जैसा कि WebApp2 के साथ * ठंडा * यह हमेशा ~ 2s चिह्न के साथ प्रतिक्रिया करता है। मैं कुछ बदलाव कर रहा हूं/सुधार आपको परिणाम बताएंगे। –

+0

@ निक जॉन्सन मैंने उत्पादन उदाहरण पर सक्षम होने से django-admin को हटाकर, django-only अनुकूलन पर ध्यान केंद्रित किया। इस पर निर्भर करता है कि एप्लिकेशन उत्पादन में या स्थानीय रूप से चल रहा है या नहीं, मैंने Django सेटिंग चर 'DEBUG' सेट किया है, और अब मैं स्थानीय रूप से चल रहा हूं, तो मैं 'MIDDLEWARE_CLASSES' और' INSTALLED_APPS' में भी जोड़ता हूं। मैंने डीजेगो प्रशासन स्थिर मीडिया के ~ 600 केबी को भी हटा दिया (वे [स्वचालित रूप से उपलब्ध नहीं हैं] (http://stackoverflow.com/a/9863345/1211429) उत्पादन में)। ये Django- फोकस tweaks मेरे प्रतिक्रिया समय में सुधार * जब * ठंड * ~ 10s से ~ 5s तक। –

2

जब कोई उदाहरण नहीं चल रहा है, उदाहरण के लिए संस्करण अपग्रेड के बाद या 15 मिनट के लिए कोई अनुरोध नहीं होने पर, अनुरोध एक उदाहरण के लोडिंग को ट्रिगर करेगा जो लगभग 10s लेता है। तो आप जो देख रहे हैं वह सामान्य है।

तो यदि आपका ऐप अवधि के लिए निष्क्रिय रहता है तो 15 मिनट आपको यह व्यवहार दिखाई देगा। एक कामकाज cron नौकरी आपके प्रत्येक उदाहरण को हर 10 मिनट में पिंग करना है (हालांकि मुझे विश्वास है कि Google इसे पसंद नहीं करता है)।

अद्यतन:

आप "अनुप्रयोग सेटिंग्स" के अंतर्गत GAE व्यवस्थापक में तो बिलिंग को सक्षम करने से इस से बच सकते हैं सेट minimum निष्क्रिय उदाहरण के लिए 1. नोट की स्थापना:, केवल maxmin सेटिंग नि: शुल्क ऐप्स पर उपलब्ध नहीं है ।

+0

तो यह वही मुद्दा है [यह] (http://stackoverflow.com/questions/1854821/google-app-engine-plication-extremely-slow) ... लेकिन यह '10s' * गर्म कैसे होता है * करता है 'webapp2' ऐप्स के साथ नहीं होता है? –

+0

पता नहीं है। मैं इसे अपने जावा परीक्षण ऐप्स पर देखता हूं। –

+0

अद्यतन उत्तर देखें .. –

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