2010-08-19 20 views
7

有時,或者通過蟒殼或通過一個Python腳本獲取從數據庫數據時,蟒進程死亡,和一個字被打印到終端:Killed爲什麼一些Django ORM查詢會突然終止消息「Killed」?

這是字面上所有它說。它只發生在某些腳本上,但它總是發生在那些腳本上。對於需要一段時間才能運行的單個查詢以及南向遷移,它會逐一向數據庫添加一堆行,這一直會發生。

我最初的預感是一次交易花費的時間太長,所以我打開了Postgres的autocommit。沒有解決問題。

我查了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

我試着用搜索引擎,但正如你所預料的,一個字的錯誤消息很難谷歌。

我在單個Ubuntu 10.4 rackspace雲VPS上使用Django 1.2和Postgres 8.4,股票配置一切。

+3

只有一件事我能想到的,它會自動殺死Linux上的進程。 - 的OOM殺手。系統日誌中有什麼? – 2010-08-19 22:41:04

+0

'8月19日21:38:53 db內核:[782904.033075] python援引oom-killer:gfp_mask = 0x200da,order = 0,oom_adj = 0' 你是對的!謝謝:) – Zain 2010-08-20 02:08:39

回答

6

我只能想到的一件事會自動殺死Linux上的進程 - OOM殺手。系統日誌中有什麼?

+1

爲了完整起見,在Debian和Ubuntu服務器上使用'/ var/log/syslog'文件。 – 2012-03-01 17:27:29

0

如果使用psycopg,問題可能是db連接未關閉。

由於每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