PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

उत्पादन के लिए रेल प्रदर्शन ट्यूनिंग?

मैंने अपने ऐप को उसकेोकू पर ट्यून करने में कुछ समय बिताया है, और विभिन्न सेटिंग्स में रेल ऐप्स के प्रदर्शन ट्यूनिंग पर काम करने में कुछ समय बिताया है।

जब मैं ab -n 300 -c 75 ...myapp.com.... # चलाता हूं जो मेरी मुख्य साइट का बैकअप है, और गेंडा के साथ मुफ्त देवदार योजना पर है

Requests per second:    132.11 [#/sec] (mean)
Time per request:       567.707 [ms] (mean)
Time per request:       7.569 [ms] (mean, across all concurrent requests)

(यह एक ऐसे होम पेज के खिलाफ है जो कुछ भी गहन नहीं करता है, इसलिए मैं इसे केवल "एक बहुत ही सरल पृष्ठ के साथ मुफ्त योजना पर हरोकू कितनी तेजी से हो सकता है?" उदाहरण के रूप में प्रदान कर रहा हूं, न कि "आपके ऐप्स होना चाहिए यह तेज़")

यहाँ मेरी रेल प्रदर्शन ट्यूनिंग 101 चेकलिस्ट है:

  1. पहले ब्राउज़र/पेज लोड समय को मापें (ब्राउज़र बहुत सारे अनुरोध करता है, एबी आपको उनमें से केवल एक के बारे में बता रहा है, और आमतौर पर आपका मुख्य पृष्ठ अनुरोध मुद्दा नहीं है), पेज लोड बेसलाइन नंबर जैसे टूल से प्राप्त करें www.webpagetest.org या www.gtmetrix.com पब्लिक फेसिंग पेजों के लिए, या ब्राउज़र टूल्स Yslow, google पेज स्पीड, या निजी पेजों के लिए डायनाट्रेस के लिए। यदि आप पेज लोड वॉटरफॉल आरेख (क्रोम/फ़ायरफ़ॉक्स में 'नेट' पैनल) को देखते हैं, तो यह आमतौर पर दिखाता है कि आपका एचटीएमएल जल्दी (एक सेकंड के तहत) लोड होता है, लेकिन फिर बाकी सब कुछ लोड होने में 1-3 सेकंड लेता है। सुधार करने के तरीके पर Yslow/पृष्ठ गति अनुशंसाओं का पालन करें (सुनिश्चित करें कि आप पूरी तरह से रेल 3.1 संपत्ति पाइपलाइन सामग्री का उपयोग कर रहे हैं)

  2. 'सबसे धीमी/सबसे अधिक बार हिट' अनुरोध के मधुर स्थान को खोजने के लिए अपनी लॉग फाइलों/नए अवशेषों के माध्यम से पढ़ें, और उस अनुरोध के लिए क्या होता है प्रोफ़ाइल (क्या यह धीमी रूबी/बहुत सारे मेम उपयोग, या बहुत सारे प्रश्न हैं?) आपको चाहिए प्रदर्शन के मुद्दों का पता लगाने और निगरानी करने का एक विश्वसनीय तरीका है, और न केवल यादृच्छिक रूप से चीजों को बदलना। एक बार जब आप कुछ लक्षित क्षेत्रों की पहचान कर लेते हैं, तो परीक्षण से पहले/बाद में मदद करने के लिए परीक्षण स्क्रिप्ट बनाएं और यह साबित करें कि आपका परिवर्तन मदद करता है, और पता लगाएं कि क्या कोई प्रतिगमन रेंगता है।

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

  4. सबसे खराब प्रदर्शन करने वाले रेल ऐप्स एन + 1 प्रश्नों से ग्रस्त हैं क्योंकि यह ऑर्डर लिखना इतना आसान है। एन + 1 प्रश्न आवश्यक रूप से धीमी क्वेरी नहीं हैं, इसलिए वे धीमी क्वेरी लॉग में दिखाई नहीं देते हैं, यह सिर्फ इतना है कि उनमें से बहुत सारे हैं, और यह सब एक साथ करने के लिए और अधिक कुशल है। उस डेटा की उत्सुकता से लोड करने के लिए :include या .includes() का उपयोग करें, या अपनी क्वेरी को किसी अन्य तरीके से करने पर विचार करें।

  5. अपने ऐप के प्रवाह का विश्लेषण करें और कैशिंग अवसरों की तलाश करें। यदि उपयोगकर्ता अनुक्रमणिका पृष्ठ और विवरण पृष्ठ के बीच आगे और पीछे उछलता है, और फिर से, शायद विवरण का एक अजाक्स दृश्य, अनुक्रमणिका पृष्ठ को छोड़े बिना उन्हें वह डेटा देगा जिसकी उन्हें आवश्यकता है। मैंने उसके बारे में और विचार अपने ब्लॉग पर लिखे हैं

मैंने इस साल के WindyCityRails सम्मेलन में शिकागो में इन तकनीकों और अन्य विचारों पर एक प्रस्तुति दी। आप वीडियो को मेरे www.RailsPerformance पर यहां देख सकते हैं .com ब्लॉग मुझे उसकेोकू के बारे में जो पसंद है वह यह है कि आपको शुरू से ही स्केलेबल होना चाहिए। जब आप मेलिंग सूची पर चर्चाओं को देखते हैं, तो आप देखते हैं कि अधिकांश लोग प्रदर्शन सर्वोत्तम प्रथाओं के बारे में जानते हैं, और सर्वर से अधिकतम लाभ कैसे प्राप्त करें। मुझे यह भी पसंद है कि यदि आप सस्ते रहना चाहते हैं, तो आप सीखते हैं कि कैसे प्रदर्शन ट्यूनिंग ट्रिक्स आपको सबसे धमाकेदार बना देंगे।

शुभकामनाएँ!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डुप्लिकेट प्रविष्टियों को कैसे हटाएं?

  2. पोस्टग्रेएसक्यूएल कन्वर्ट ऐरे फ़ंक्शन से कॉलम में लौटा है

  3. [वीडियो] PostgreSQL में JSON डेटा प्रकारों का परिचय

  4. Postgresql कार्य निष्पादन प्रक्रिया

  5. Postgres में -Infinity &Infinity के लिए उपयुक्त मान