docker में डेटाबेस के लिए / dev / shm आकार की अनुशंसा

Sep 11 2020

हम docker कंटेनर में 11.7 डेटाबेस postgresql है।

हमारे पास एक मुद्दा था "pq: could not resize shared memory segment "/PostgreSQL.XXX" to XXX bytes: No space left on device", यहाँ वर्णित है ।

समाधान में मदद मिली, हमारे पास अब कोई मुद्दा नहीं है। लेकिन Postgres के साथ docker कंटेनर के लिए हमें किस आकार को shm_size के लिए सेट करना चाहिए?

क्या कोई सिफारिश है? हम shm_size के लिए 'इष्टतम आकार' की गणना कैसे कर सकते हैं?

जवाब

2 LaurenzAlbe Sep 11 2020 at 15:32

दो चीजें हैं जो साझा मेमोरी का उपयोग करती हैं:

  • साझा स्मृति जो सर्वर प्रारंभ पर आवंटित की गई है। इसमें कई भाग होते हैं, लेकिन शेर का हिस्सा shared_buffersडेटा कैश है।

    इसलिए आपके पास उससे अधिक साझा मेमोरी होनी चाहिए।

  • समानांतर कार्यकर्ताओं द्वारा संवाद करने के लिए समानांतर क्वेरी द्वारा आवंटित साझा स्मृति खंड।

    उनका आकार स्थानांतरित किए गए डेटा पर निर्भर करता है, और उनमें से कई को आवंटित किया जा सकता है, इसलिए यह एक ऐसा संसाधन है जिसे नियंत्रित करना कठिन है।

एक स्मृति-विवश प्रणाली पर, मैं सलाह दूंगा कि आप समानांतर क्वेरी को अक्षम करें। यह प्रश्नों को तेज़ बनाता है, लेकिन प्रति क्वेरी में अधिक संसाधनों का उपयोग करता है, इसलिए कुल मिलाकर सुधार नहीं होता है। यदि आप एक ही क्वेरी पर बहुत सारे संसाधन फेंकना चाहते हैं तो यह अच्छा है।

समानांतर क्वेरी को अक्षम करने के लिए, max_parallel_workers0 पर सेट करें।