2012-11-12 78 views
2

我已經編寫了一個腳本,可以將我的數據從MySQL轉換爲MongoDB。在表格的處理有400萬行我(當它幾乎完成):從MySQL複製到MongoDB時強制關閉的連接

Traceback (most recent call last): 
    File "C:\Python32\lib\site-packages\pymongo\connection.py", line 822, in _send_message 
    sock_info.sock.sendall(data) 
socket.error: [Errno 10054] An existing connection was forcibly closed by the remote host 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "kolibri_to_mongo.py", line 94, in <module> 
    coll.update(..., upsert=True) 
    File "C:\Python32\lib\site-packages\pymongo\collection.py", line 411, in update 
    _check_keys, self.__uuid_subtype), safe) 
    File "C:\Python32\lib\site-packages\pymongo\connection.py", line 837, in _send_message 
    raise AutoReconnect(str(e)) 
pymongo.errors.AutoReconnect: [Errno 10054] An existing connection was forcibly closed by the remote host 
Exception mysql.connector.errors.InternalError: InternalError() in <bound method SqlConn.__del__ of SQLConn(?)> ignored 

那是一個PyMongo錯誤或SQL錯誤?我可以檢查MySQL或MongoDB端的任何限制(大小或超時)嗎?或者只是有人殺了我的查詢?

編輯:我現在我不能超時錯誤連接到MongoDB的再通知:(有沒有在MongoDB中需要改變任何限度,它更可能是另一個IT /硬件問題

回答

1

然而,這個錯誤是來自MySQL,至於爲什麼有一點未知。錯誤似乎表明,第在這種情況下,MongoDB關閉連接。

我會建議在pymongo日誌中查看是否有任何進一步的信息。

我也會在MySQL端運行tcpdump來查看MongoDB服務器是否被拒絕了與RST的連接嘗試,或者SYN是否離開MySQL服務器而被忽略(對於後者,您應該看到syns根據重傳定時器相應地間隔開,例如嘗試1s,2s + 3s,3s + 4s,4s + 21s)。

在MongoDB服務器上,netstat -an | grep LISTsudo lsof -c mongod表明MongoDB仍在監聽端口27017(假設您沒有更改默認值)?

關於MongoDB連接錯誤,經典案例是ulimit設置太低,服務器用完文件描述符。這裏有兩個很好的鏈接,供您閱讀:

+0

感謝很多建議。我希望我可以避免管理任務,但很好了解一些基礎知識:) – Gerenuk

1

這是MySQL服務器上的脫節 - 我不知道你打查詢超時或死鎖

你有任何查詢速度慢或長的查詢還是下車在你的MySQL日誌中的任何錯誤