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 日志,看看那里是否有任何进一步的信息。

我还将tcpdump在 MySQL 端运行,以查看 MongoDB 服务器是否被拒绝与 RST 的连接尝试,或者 SYN 是否离开 MySQL 服务器并被忽略(对于后者,您应该看到同步间隔相应地基于重传定时器,例如尝试 1@0s、2@+3s、3@+9s、4@+21s)。

在 MongoDB 服务器上,是否netstat -an | grep LISTsudo lsof -c mongod显示 MongoDB 仍在侦听端口 27017(假设您没有更改默认值)?

关于 MongoDB 连接错误,典型的情况是ulimit设置太低,服务器用完文件描述符。这里有两个很好的链接供您阅读:

于 2012-11-14T09:35:38.223 回答