2

データを MySQL から MongoDB に変換するスクリプトを作成しました。私が得た4,000,000行のテーブルの処理中(ほぼ完了したとき):

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/ハードウェアの問題である可能性が高いですか?

4

2 に答える 2

1

これはMySQLサーバーの切断です-クエリのタイムアウトまたはデッドロックが発生しているのではないかと思います。

遅いクエリや長いクエリがありますか、それともMySQLログにエラーがありますか?

于 2012-11-12T20:43:05.140 に答える
1

このエラーは MySQL から発生していますが、その理由は少し不明です。このエラーは、リモート エンド (この例では MongoDB) が接続を閉じたことを示しているように見えます。

pymongo ログを調べて、さらに情報があるかどうかを確認することをお勧めします。

また、MySQL 側で実行tcpdumpして、MongoDB サーバーが RST で接続試行を拒否されているかどうか、または SYN が MySQL サーバーを離れて単に無視されているかどうかを確認します (後者の場合、に基づいてそれに応じて syns が間隔を空けて表示されるはずです)。再送信タイマー、例: Attempt 1 @ 0s、2 @ +3s、3 @ +9s、4 @ +21s)。

MongoDB サーバーでは、MongoDBがまだポート 27017 でリッスンしていることを示していますか (デフォルトを変更していないと仮定します) netstat -an | grep LIST?sudo lsof -c mongod

MongoDB 接続エラーに関して、典型的なケースは、ulimit設定が低すぎてサーバーがファイル記述子を使い果たした場合です。ここにあなたが読むための2つの良いリンクがあります:

于 2012-11-14T09:35:38.223 に答える