2010-08-19 7 views
7

कभी कभी, जब या तो अजगर खोल के माध्यम से या एक अजगर स्क्रिप्ट के माध्यम से डेटाबेस से डेटा प्राप्त करने में, अजगर प्रक्रिया मर जाता है, और एक ही शब्द टर्मिनल के लिए मुद्रित किया जाता है: Killedकुछ Django ORM प्रश्न "हत्या" संदेश के साथ अचानक क्यों समाप्त होते हैं?

है यह सचमुच यह सब कहते हैं। यह केवल कुछ स्क्रिप्ट के साथ होता है, लेकिन यह हमेशा उन स्क्रिप्ट के लिए होता है। यह लगातार एक ही क्वेरी के साथ होता है जिसमें दौड़ने में कुछ समय लगता है, और दक्षिण माइग्रेशन के साथ जो डेटाबेस में एक-एक करके पंक्तियों का एक गुच्छा जोड़ता है।

मेरा प्रारंभिक झटका यह था कि एक ही लेनदेन बहुत अधिक समय ले रहा था, इसलिए मैंने पोस्टग्रेस के लिए ऑटोोकॉमिट चालू कर दिया। समस्या का समाधान नहीं किया।

मैं Postgres लॉग की जाँच की है, और इस वहाँ में केवल एक चीज है:

2010-08-19 22:06:34 UTC LOG: could not receive data from client: Connection reset by peer

2010-08-19 22:06:34 UTC LOG: unexpected EOF on client connection

मैं googling की कोशिश की है, लेकिन आप उम्मीद कर सकते के रूप में, एक शब्द त्रुटि संदेश के लिए Google के लिए मुश्किल है।

मैं पोस्टग्रेस 8.4 के साथ Django 1.2 का उपयोग कर रहा हूं, एक ही उबंटू 10.4 रैकस्पेस क्लाउड वीपीएस, सब कुछ के लिए स्टॉक कॉन्फ़िगरेशन पर।

+3

केवल एक बात मैं उस के बारे में सोच सकता है स्वचालित रूप से लिनक्स पर एक प्रक्रिया मार देगा -।। OOM किलर। सिस्टम लॉग में क्या है? –

+0

'अगस्त 1 9 21:38:53 डीबी कर्नेल: [782904.033075] पायथन ने ओम-किलर का आह्वान किया: gfp_mask = 0x200da, order = 0, oom_adj = 0' आप सही हैं! धन्यवाद :) – Zain

उत्तर

6

केवल एक चीज जिसे मैं सोच सकता हूं वह लिनक्स - ओओएम किलर पर स्वचालित रूप से एक प्रक्रिया को मार देगा। सिस्टम लॉग में क्या है?

+1

पूर्णता के लिए, डेबियन और उबंटू सर्वरों में जो '/ var/log/syslog' फ़ाइल है। –

0

यदि psycopg का उपयोग किया जा रहा है तो समस्या यह है कि डीबी कनेक्शन बंद नहीं किया जा रहा है।

प्रति psycopg docs उदाहरण के रूप में:

# Connect to an existing database 
>>> conn = psycopg2.connect("dbname=test user=postgres") 
# Open a cursor to perform database operations 
>>> cur = conn.cursor() 
# Close communication with the database 
>>> cur.close() 
>>> conn.close() 

ध्यान दें कि अगर आप कनेक्शन हटा दिया तो (dbcon.close() का उपयोग कर या कनेक्शन वस्तु को हटा कर आप शायद जारी करने के लिए जरूरत है एक प्रतिबद्ध या रोलबैक, किस तरह के आधार पर लेन-देन टाइप अपने कनेक्शन के तहत काम कर रहा है

अधिक जानकारी के लिए the close connection docs देखें

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