2015-11-25 6 views
5

मुझे वास्तव में कोई जानकारी नहीं है कि समस्या क्या है।पोस्टग्रेस्क्ल डेटाबेस यादृच्छिक रूप से क्रैश

लॉग

घातक पढ़ें: माफ करना, भी कई ग्राहकों को पहले से ही

से अधिक बार बार। सबसे पहले मैंने सोचा कि कभी-कभी कनेक्शन ठीक से बंद हो जाते थे या बंद नहीं होते थे इसलिए मैंने परीक्षण किया कि डेटाबेस से कनेक्ट करके और किसी भी समय पर कितने खोले गए कनेक्शन जांच रहे थे, और जवाब हमेशा रहा है 1.

मैंने कोशिश की डीबी का उपयोग करने वाली वेबसाइट से कनेक्ट करने के लिए और मैं 2 या 3 खुले कनेक्शन पर झलकने में कामयाब रहा, जो पेज लोड होने पर तत्काल बंद हो गए थे।

मेरा शेष अनुमान यह है कि कभी-कभी वेबसाइट पर समवर्ती कनेक्शन में स्पाइक्स होते हैं और इससे डेटाबेस को नए कनेक्शन स्वीकार करना बंद हो जाता है और किसी भी तरह से मौजूदा कनेक्शन को छोड़ने की अनुमति नहीं मिलती है।

मैंने डाटाबेस से कनेक्ट होने वाले किसी भी कोड को लिखा नहीं है, मैं एक सुंदर वेनिला Django (1.7) बैकएंड का उपयोग कर रहा हूं जो सभी कनेक्शन को संभालता है।

मुझे Google खोजते समय कुछ भी नहीं मिला, क्या किसी ने किसी भी समस्या का अनुभव किया है?

संपादित करें:

Database configuration is here(PasteBin)

अनिवार्य हिस्सा: कुछ अपने PostgreSQL को कोसने है, लेकिन उस त्रुटि अकेले डीबी क्रैश नहीं होता की तरह

port = 26445    # (change requires restart) 
max_connections = 500   # (change requires restart) 
unix_socket_directory = '/home/clearintent/webapps/norr2_db/run'  # (change requires restart) 

shared_buffers = 32MB   # min 128kB 
        # (change requires restart) 
log_destination = 'stderr'  # Valid values are combinations of 
logging_collector = on   # Enable capturing of stderr and csvlog 
log_directory = 'pg_log'  # directory where log files are written, 
log_filename = 'postgresql-%a.log' # log file name pattern, 
log_truncate_on_rotation = on  # If on, an existing log file with the 
log_rotation_age = 1d   # Automatic rotation of logfiles will 
log_rotation_size = 0   # Automatic rotation of logfiles will 
datestyle = 'iso, mdy' 
lc_messages = 'C'   # locale for system error message 
lc_monetary = 'C'   # locale for monetary formatting 
lc_numeric = 'C'   # locale for number formatting 
lc_time = 'C'    # locale for time formatting 
default_text_search_config = 'pg_catalog.english' 
+0

एक दुर्घटना नहीं है यही कारण है, FYI करें। –

+0

कृपया डेटाबेस कॉन्फ़िगरेशन शामिल करें, शायद समस्या वहां है। – noamk

+0

@ क्रिएग्रिंजर मुझे लगता है कि यह है, मैं प्रक्रिया को भी मार नहीं सकता, मुझे – XelharK

उत्तर

3

लग रहा है।
इसका मतलब यह है कि नवीनतम कनेक्शन प्रयास डीबी को समानांतर कनेक्शन की मात्रा से अधिक है और इसे अस्वीकार कर दिया गया था।

लेकिन, यदि आप हर मिनट कनेक्शन की राशि डंप करना चाहते हैं, तो आप,

#!/bin/bash 

function spew_connections() { 
# Run psql on local if trust or auth is set. 
# Change dbadmin and dbname accordingly. 
/usr/bin/psql -d dbname -U dbadmin -w -t -c "SELECT localtimestamp(2), count(*) FROM pg_stat_activity;" 
} 

echo -n `spew_connections` >> /tmp/connections 
echo >> /tmp/connections 

और फिर इस स्क्रिप्ट का उपयोग कर सकते हैं crontab हर मिनट

crontab -e 
*/1 * * * * /path/to/executable/script 
+0

धन्यवाद। मैं कोशिश करूँगा और एक और दुर्घटना के बाद परिणामों के साथ वापस आऊंगा। – XelharK

0

Django नहीं करता है 'का उपयोग कर इसे निष्पादित करने के लिए टी स्वचालित रूप से कनेक्शन बंद करें।

आपका डेटाबेस विन्यास को

'OPTIONS': { 
    'autocommit': True, 
} 

जोड़ें।

+2

Django [** ** स्वचालित रूप से बंद कनेक्शन करता है] (https://docs.djangoproject.com/en/1.7/ref/settings/#conn-max-age)। स्वत: प्रतिबद्धता [Django 1.6 के बाद डिफ़ॉल्ट रूप से चालू है] (https://docs.djangoproject.com/en/1.7/ref/databases/#autocommit-mode) – Steven

+0

हाँ मैं बहुत चौंक गया होता। मैं Django 1.7 का उपयोग कर रहा हूँ। और मैंने अपने परीक्षणों के बाद खोले हुए कनेक्शन को भी देखा होगा। – XelharK

+0

@ स्टेवन हाँ, आपके पास सही है। मैंने Django संस्करण के बारे में जानकारी नहीं देखी। –

0

अपने ऐप और डेटाबेस के बीच pgBouncer जैसे टूल इंस्टॉल करने का प्रयास करें।

पीजी बाउंसर PostgreSQL के लिए एक हल्के कनेक्शन पूलर है।

सबसे महत्वपूर्ण अंक:

[databases] 
pgbase = host=localhost dbname=bazdb 

[pgbouncer] 
listen_addr = * 
listen_port = 6432 

pool_mode = transaction 

और ग्राहक में स्थानीय होस्ट पर pgbase से कनेक्ट: 6432

+0

क्या इससे मुझे कनेक्शन की संख्या में वृद्धि नहीं होगी? – XelharK

+0

सं। पीजी बॉसर डीबी से कनेक्शन प्रबंधित करता है। मुझे अपने सिस्टम पर एक ही समस्या थी। pgBoucer निश्चित रूप से इस समस्या का समाधान किया। जब मैं अपने व्यवस्थापक को पकड़ता हूं, तो मैं इस pgBoucer कॉन्फ़िगरेशन पेस्ट करता हूं। –

संबंधित मुद्दे