从MySQL复制到MongoDB时强制关闭连接

时间:2012-11-12 17:17:31

标签: mysql mongodb

我编写了一个脚本,将我的数据从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 /硬件问题?

2 个答案:

答案 0 :(得分:1)

这是MySQL服务器上的断开连接 - 我想知道你是否遇到了查询超时或死锁。

您是否有任何慢查询或长查询,或者您的MySQL日志中是否有任何错误?

答案 1 :(得分:1)

该错误来自MySQL,但是,为什么有点未知。该错误似乎表明远程端,在这种情况下,MongoDB关闭了连接。

我建议查看pymongo日志,看看那里是否还有其他信息。

我还会在MySQL端运行tcpdump以查看MongoDB服务器是否被拒绝连接尝试使用RST,或者SYN是否正在离开MySQL服务器而只是被忽略(对于后者,你应该根据重传定时器看到相应的间距,例如,尝试1 @ 0s,2 @ + 3s,3 + 9s,4 + 21s)。

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

关于MongoDB连接错误,经典案例是ulimit设置太低而服务器用完了文件描述符。以下是两个很好的链接供您阅读: