DISK IO को बहुत ऊंचा कर देता है। इसे तुरंत कम करने के लिए मैं क्या कर सकता हूं?


13

मुझे पता है कि मैं जो भी उपयोग कर रहा हूं उससे ज्यादा तेजी से डिस्क्स कर रहा हूं, लेकिन इसमें अधिक समय लगेगा और मैं डिस्क एमओ को कम करने के लिए कुछ आपातकालीन उपायों का उपयोग करने की कोशिश कर रहा हूं। atop लाल पर DSK उपयोग की रिपोर्ट लगभग लगातार कर रहा है। यह पोस्टग्रेज 8.3 के लिए है।

मेरी शेयर्ड_बफर्स ​​सेटिंग 24 एमबी की है, हालांकि सर्वर में 16 जीबी का रैम है जो पूरी तरह से उपयोग नहीं किया गया है। मेरा पहला विचार डेटाबेस को उतना ही रैम देना था जितना वह ले सकता था लेकिन मुझे यकीन नहीं है कि ऐसा कैसे किया जाए (यह एक समर्पित डेटाबेस सर्वर है)।

किसी भी समाधान के लिए जिसे पुनरारंभ करने की आवश्यकता नहीं है, वह बेहतर है लेकिन मैं इस बिंदु पर जो कुछ भी प्राप्त कर सकता हूं वह ले लूंगा।

धन्यवाद!


यह प्रश्न सर्वरफॉल्ट
फ्रांसिस्को आर

आप shared_bufferspostgresql.conf config फाइल में वृद्धि करने की कोशिश कर सकते हैं । इस परिवर्तन को पुनः आरंभ करने की आवश्यकता है। साथ ही, आपको /proc/sys/kernel/shmmaxइससे पहले मूल्य बढ़ाने की आवश्यकता हो सकती है।
खालिद

जवाबों:


12

24MB साझा किया गया_बफ़र सेटिंग रूढ़िवादी डिफ़ॉल्ट है, मैं कहूंगा कि यह 16GB RAM उपलब्ध के साथ एक समर्पित डेटाबेस के लिए काफी अधिक होना चाहिए। लेकिन हां, आपको इसका आकार बदलने के लिए सर्वर को पुनरारंभ करना होगा। http://wiki.postgresql.org/wiki/Performance_Optimization प्रदर्शन कॉन्फ़िगरेशन दिशानिर्देशों के लिए शुरू करने के लिए एक अच्छी जगह है। Share_buffers को 4GB या 6GB पर सेट करना अधिक उचित प्रतीत होगा।

ध्यान दें कि linux पर आपको kern.shmmax sysctl सेटिंग (/etc/sysctl.conf में या बस लिखकर / proc / sys / kernel / shmmax) समायोजित करने की आवश्यकता है ताकि इस साझा की गई मेमोरी का एक ब्लॉक आवंटित किया जा सके। यदि आपको यह न बताने में कोई त्रुटि नहीं है कि आपको कितना अनुरोध किया गया था, तो आपको kernel.shmmax को इससे अधिक पर सेट करना होगा।

चूँकि आपके पास बहुत सारी मेमोरी है, आप डिफ़ॉल्ट वर्क_ मीम को उच्चतर सेट करने पर भी विचार कर सकते हैं, जिससे टेम्प्स और हैश (समूह / ऑर्डर / विशिष्ट आदि) जैसी चीजें टेंप फाइलों का उपयोग करने के बजाय मेमोरी में काम करने लगती हैं। आपको ऐसा करने के लिए सर्वर को पुनरारंभ करने की आवश्यकता नहीं है, बस कॉन्फ़िगरेशन फ़ाइल को अपडेट करें, सेवा को फिर से लोड करें और नए सत्रों को नई सेटिंग मिलेगी। एक सत्र के लिए डिफ़ॉल्ट कार्य मेमोरी 1 एमबी है, आप अधिकतम गणना कर सकते हैं जो एक ही समय में उपयोग की जा सकती है work_mem * max_client_connectionsऔर अनुमान लगा सकती है कि क्या प्रभाव पड़ेगा।

आपको योजनाकार को इंगित करने के लिए प्रभावी_cache_size भी बढ़ाना चाहिए कि कर्नेल FS परत को पोस्टग्रेजिक के साझा बफ़र्स के बाहर स्मृति में बहुत सारे पृष्ठ कैशिंग करने की संभावना है।

आदि आदि आशा है कि यह आपको एक अच्छी शुरुआत के लिए बंद कर देता है।


अच्छी पोस्ट, केवल आपके मेमोरी उपयोग का अनुमान थोड़ा खतरनाक है। work_mem एक अधिकतम प्रति सॉर्ट / हैश ऑपरेशन है, इसलिए जटिल क्वेरीज़ में कई सॉर्ट / हैश ऑपरेशन हो सकते हैं और इस प्रकार बहुत अधिक तो एक वर्क_म का उपयोग कर सकते हैं।
इलके

धन्यवाद, यह बहुत मदद की! एक और महत्वपूर्ण परिवर्तन चेकपॉइंट_सेक्ट और चेकपॉइंट_कॉमप्लेक्शन_टार्ग था जिसका मेरे डिस्क उपयोग और समग्र प्रदर्शन पर एक बड़ा प्रभाव था। संकट टली। ( Wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server )
हारेल


2

यहां दिए गए सुझावों के अलावा, आप अपनी ऑटो वैक्युम सेटिंग में भी देखना चाहते हैं। डिफ़ॉल्ट रूप से यह लगभग 50 अपडेट के बाद ट्रिगर हो जाएगा और यदि आपका डेटाबेस बहुत सारे अपडेट / इंसर्ट कर रहा है तो यह अनावश्यक मात्रा में वैक्यूम स्टेटमेंट को ट्रिगर कर सकता है जो बहुत सारे IO उत्पन्न करेगा।


1

एक ऐसी प्रणाली पर जो सामान्य ऑपरेशन के दौरान अधिकतम I / O थ्रूपुट के करीब है, आप चौकियों से I / O लोड को कम करने के लिए चेकपॉइंट_completion_target बढ़ाना चाह सकते हैं । इसका नुकसान यह है कि लंबे समय तक चौकियों पर वसूली का समय प्रभावित होता है, क्योंकि वसूली में संभावित उपयोग के लिए अधिक वाल सेगमेंट को इधर-उधर रखना होगा।

अधिक देखें यहाँ


0

यदि पोस्टग्रैसिकल की डिस्क बहुत अधिक है, तो आपको विशेष रूप से बयानों के लिए चल रहे बयानों की जांच करनी चाहिए, "डिस्क पर सॉर्ट" कर, और उचित अनुक्रमित सेट करें।

"Postgresql प्रदर्शन ट्यूनिंग" के लिए बस Google, आपको पर्याप्त हिंड्स मिलेंगे जहां से शुरू करना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.