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

त्रुटि:32GB RAM और बिना स्वैप फ़ाइल वाली मशीन की मेमोरी समाप्त हो गई है

अगर मैं आपके टॉप के आउटपुट को सही ढंग से पढ़ रहा हूं, तो इसे उस समय नहीं लिया जाता है जब आपकी याददाश्त खत्म हो जाती है।

वास्तविक त्रुटि ठीक लगती है - यह बड़ी मात्रा में स्मृति का अनुरोध नहीं कर रहा है, इसलिए संभवतः उस समय मशीन स्मृति से बाहर थी।

आइए आपकी सेटिंग पर एक नज़र डालें:

max_connections = 1000                  # (change requires restart)
work_mem = 40MB                         # min 64kB

तो - आपकी राय है कि आप 10 + 40 एमबी (कुछ 40 एमबी के गुणकों का उपयोग कर सकते हैं, लेकिन उचित हो) का उपयोग करके 1000 समवर्ती प्रश्नों का समर्थन कर सकते हैं। तो - यह मुझे सुझाव दे रहा है कि आपकी मशीन में> 500 कोर हैं और कहते हैं 100 जीबी रैम। ऐसा नहीं है।

तो - अपने कोर की संख्या लें और इसे दोगुना करें - यह कनेक्शन की अधिकतम संख्या के लिए एक उचित मूल्य है। यह आपको प्रत्येक कोर पर एक क्वेरी की अनुमति देगा जबकि दूसरा I/O की प्रतीक्षा कर रहा है। फिर, यदि आपको आवश्यकता हो तो DB के सामने एक कनेक्शन पूलर रखें (pgbouncer / Java का कनेक्शन पूलिंग)।

फिर, यदि आपको आवश्यकता हो तो आप वर्क_मेम बढ़ाने पर भी विचार कर सकते हैं।

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

संपादित करें:work_mem बनाम साझा पर विस्तृत करें

यदि संदेह है, तो हमेशा दस्तावेज़ीकरण

shared_buffers मान है, जैसा कि नाम से पता चलता है कि बैकएंड के बीच साझा किया गया है। work_mem केवल प्रति बैकएंड नहीं है, यह वास्तव में प्रति प्रकार है। तो - एक क्वेरी तीन या चार बार उस राशि का उपयोग कर सकती है यदि वह तीन सबक्वेरी पर सॉर्ट कर रही हो।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रिकॉर्ड के लिए IS NOT NULL टेस्ट वैरिएबल सेट होने पर TRUE नहीं लौटाता है

  2. NULL मानों के साथ NOT LIKE का व्यवहार

  3. फ्लैट जेसनबी सरणी के तत्वों पर क्वेरी पसंद करें

  4. पोस्टग्रेएसक्यूएल में एसयूएम () फ़ंक्शन

  5. एक PostgreSQL तालिका से विशिष्ट पंक्तियों को INSERT SQL स्क्रिप्ट के रूप में निर्यात करें