पोस्टग्रेस सर्वर लॉग को देखते हुए, मुझे लगता है कि एक ही पोस्टग्रेस सर्वर पर सटीक वही क्वेरी एक लिनक्स क्लाइंट या विंडोज क्लाइंट से आने पर काफी लंबा (लगभग 10x लंबा) लेती है ।पोस्टग्रेस्क्ल: एक अलग क्लाइंट में क्वेरी 10x धीमी
प्रश्न एक Django एप्लिकेशन से 4 जीबी रैम और 8 जीबी रैम के साथ एक विंडोज मशीन पर चल रहे एक Django अनुप्रयोग से आते हैं। दोनों pyhon वातावरण psycopg2 पुस्तकालय संस्करण 2.4.4 एक ही postgres सर्वर से अनुरोध भेजने के लिए की है।
नीचे postgres सर्वर लॉग
खिड़कियों क्वेरी (समय) के साथ कर रहे हैं:
2013-06-11 12:12:19 EEST [unknown] 10.1.3.152(56895) mferreiraLOG: duration: 3207.195 ms statement: SELECT "autotests_tracerperformance"."id", "autotests_tracerperformance"."date", "autotests_tracerperformance"."video_id", "autotests_tracerperformance"."revision_id", "autotests_tracerperformance"."computer_id", "autotests_tracerperformance"."probe", "autotests_tracerperformance"."time_tostart", "autotests_tracerperformance"."hang_atstart", "autotests_tracerperformance"."time_tohang", "autotests_tracerperformance"."hang", "autotests_tracerperformance"."crash", "autotests_tracerperformance"."stacktrace", "autotests_tracerperformance"."framemax", "autotests_tracerperformance"."maxtime", "autotests_tracerperformance"."avgtime" FROM "autotests_tracerperformance" INNER JOIN "revisions" ON ("autotests_tracerperformance"."revision_id" = "revisions"."id") WHERE ("autotests_tracerperformance"."computer_id" = 61 AND "revisions"."repo" = 'Trunk')
linux क्वेरी (बहुत लंबे समय तक):
2013-06-11 12:12:56 EEST [unknown] 10.1.3.154(35325) mferreiraLOG: duration: 22191.773 ms statement: SELECT "autotests_tracerperformance"."id", "autotests_tracerperformance"."date", "autotests_tracerperformance"."video_id", "autotests_tracerperformance"."revision_id", "autotests_tracerperformance"."computer_id", "autotests_tracerperformance"."probe", "autotests_tracerperformance"."time_tostart", "autotests_tracerperformance"."hang_atstart", "autotests_tracerperformance"."time_tohang", "autotests_tracerperformance"."hang", "autotests_tracerperformance"."crash", "autotests_tracerperformance"."stacktrace", "autotests_tracerperformance"."framemax", "autotests_tracerperformance"."maxtime", "autotests_tracerperformance"."avgtime" FROM "autotests_tracerperformance" INNER JOIN "revisions" ON ("autotests_tracerperformance"."revision_id" = "revisions"."id") WHERE ("autotests_tracerperformance"."computer_id" = 61 AND "revisions"."repo" = 'Trunk')
psql से सीधे क्रियान्वित (सबसे तेज़):
2013-06-11 12:19:06 EEST psql [local] mferreiraLOG: duration: 1332.902 ms statement: SELECT "autotests_tracerperformance"."id", "autotests_tracerperformance"."date", "autotests_tracerperformance"."video_id", "autotests_tracerperformance"."revision_id", "autotests_tracerperformance"."computer_id", "autotests_tracerperformance"."probe", "autotests_tracerperformance"."time_tostart", "autotests_tracerperformance"."hang_atstart", "autotests_tracerperformance"."time_tohang", "autotests_tracerperformance"."hang", "autotests_tracerperformance"."crash", "autotests_tracerperformance"."stacktrace", "autotests_tracerperformance"."framemax", "autotests_tracerperformance"."maxtime", "autotests_tracerperformance"."avgtime" FROM "autotests_tracerperformance" INNER JOIN "revisions" ON ("autotests_tracerperformance"."revision_id" = "revisions"."id") WHERE ("autotests_tracerperformance"."computer_id" = 61 AND "revisions"."repo" = 'Trunk');
अन्य प्रश्नों जो डेटाबेस से इतने सारे आइटम लोड करने की जरूरत नहीं है लगभग एक ही प्रदर्शन कर रहे हैं। इस प्रश्न के लिए ग्राहकों के बीच
क्यों इतना बड़ा समय मतभेद?
नोट: ट्रांसमिशन समय प्रासंगिक नहीं हैं, क्योंकि सभी मशीनें एक ही इंट्रानेट में हैं। इसके अलावा, धीमी बार देखा जाता है जब ग्राहक के अनुरोध के एक ही Linux मशीन जहां PostgreSQL सर्वर चल रहा है से आता है।
नोट 2: साइकोप 2 विंडोज और लिनक्स में अलग-अलग स्थापित किया गया था। जबकि विंडोज में मैं एक पहले से पैक द्विआधारी से यह स्थापित किया है, लिनक्स में मैं भाग गया जो एक PostgreSQL सिस्टम पर उपलब्ध स्थापना पर निर्भर करता है 'पिप psycopg2 स्थापित'। क्या इसका परिणाम क्लाइंट साइड पर प्रदर्शन को प्रभावित करने वाले पैरामीटर के लिए अलग-अलग मानों में हो सकता है (उदा। 'Work_mem' पैरामीटर)?
अंधेरे में बस एक शॉट: शायद यह एक PostgreSQL आंतरिक कैशिंग मुद्दा है? क्या आपने लिनक्स से कई बार SELECT कथन सबमिट करने का प्रयास किया था, और विंडोज़ से कई बार भी? मैं कल्पना करता हूं कि औसत समय वही होना चाहिए। – mawimawi
माविमावी के लिए: कोई भी समय लगातार नहीं है, मैंने इसे डिबग करना शुरू कर दिया क्योंकि मेरा उत्पादन django ऐप विकास (विंडोज़) मशीन की तुलना में बहुत धीमी थी। यदि आप कई बार चलाते हैं तो समय समान होते हैं। – mpaf
यह नेटवर्क लेट से संबंधित हो सकता है। विशेष रूप से यदि आप किसी सर्वर से अगली तक डेटा की बड़ी मात्रा में संचारित कर रहे हैं। पोस्टग्रेज़ में वास्तव में कितना समय व्यतीत होता है, यह देखने के लिए सर्वर स्तर पर क्वेरी लॉग करें। ओह, यह पाइथन में निष्पादन समय अंतर भी हो सकता है, उदा। वस्तुओं आदि बनाना –