当前位置: 首页 > 知识库问答 >
问题:

ConnectionError:写入套接字时出现错误104。对等方重置连接

仲孙鸿飞
2023-03-14

连接错误:写入套接字时出错104。连接由对等重置。

环境: ubuntu: 16.04 python: 3.6 PC总内存: 32G

我已经安装了redis'3.0.6'。

当您尝试插入500000个数据时,它会成功,但当您尝试插入4000万个大数据时,它会失败。

当尝试将Python数据帧插入redis时,由于容量太大而失败。

数据插入成功:

 1. r = redis.StrictRedis(host='localhost', port=6379, db=0)
 2.log_df_50.shape
   -> (500000, 6)
 3.r.setex('log_df_50',100,log_df_50.to_json())
   -> True

数据插入失败:

 1.r = redis.StrictRedis(host='localhost', port=6379, db=0)
 2. log_df.shape
   -> (41757802, 6)
 3. r.setex('session',100,log_df.to_json())

ConnectionResetError Traceback(最近的调用最后)~/anaconda3/envs/Colabo/lib/python3.6/site-pack/redis/connection.py在send_packed_command(自己,命令,check_health)705中的项目在命令:-

~/anaconda3/envs/Colabo/lib/python3.6/site-包/redis/_compat.py在sendall(袜子,*args,**kwargs)8 def sendall(袜子,*args,**kwargs): ----

连接重置错误:[Errno 104]连接由对等重置

在处理上述异常期间,发生了另一个异常:

中的ConnectionError回溯(最近一次呼叫)----

setex(self,name,time,value)1820中的~/anaconda3/envs/Colabo/lib/python3.6/site-packages/redis/client.py,如果是instance(time,datetime.timedelta):1821 time=int(time.total_seconds())-

~/anaconda3/envs/Colabo/lib/python3.6/site-packages/redis/client.py在execute_命令(self,*args,**选项)898 conn=self.connection或pool.get_connection(命令名,**选项)899尝试:--

~/anaconda3/envs/Colabo/lib/python3.6/site-pack/redis/connection.py在send_command(自己,*args,**kwargs)724"打包并发送命令到Redis服务器"725self.send_packed_command(self.pack_command(*args),--

~/anaconda3/envs/Colabo/lib/python3.6/site-packages/redis/connection.py在send\u packed\u命令(self,command,check\u health)716 errmsg=e.args[1]717 raise ConnectionError(“写入套接字时出现错误%s.%s”。%--

连接错误:写入套接字时出错104。连接由对等重置。

原因有什么线索吗?

如何将Python大容量数据框插入redis?

我应该怎么做才能解决这个问题?

共有2个答案

晋承嗣
2023-03-14

我也有同样的问题。在中设置ssl=True

1. r = redis.StrictRedis(host='localhost', port=6379, db=0, ssl=True)

帮我解决了

子车宏浚
2023-03-14

我认为问题在于Redis协议中键/值的512 MB限制。
https://redis.io/topics/protocol
https://redis.io/topics/data-types-intro

现在你对此无能为力。

您可能需要将数据帧切成更小的片段。

更新:
您还可以使用较新的Redis(最低5.0)并在Redis.conf中增加proto-max-bulk-len。https://github.com/redis/redis/issues/7354
我还必须增加客户端查询缓冲区限制

 类似资料:
  • 我使用HttpClient4.4发送get和post请求。并且我刚刚创建了一个httpclient的simpile包装器以方便使用: 当我使用这个类发送post请求时。奇怪的事情发生了: 第一次,我向服务器发送一个post请求,一分钟后就可以了,我向服务器发送一个同样的请求,也可以了。但几分钟后,我发出了一个同样的请求,有些不对劲: 但是,我仍然向服务器发送一个相同的请求,它又可以了。 每次我按照

  • 当使用Python2.7和从API检索数据时,我得到了错误

  • 问题内容: 我使用httpclient 4.4发送get和post请求。我刚刚创建了一个简单的httpclient包装器,以方便使用: 当我使用此类发送帖子请求时。发生了一些奇怪的事情: 第一次,我将发布请求发送到服务器,几分钟后没问题,我将相同的请求发送到服务器,也行。但是几分钟后,我发送了相同的请求,出现了错误: 但是之后,我仍然向服务器发送了相同的请求,再次可以。 每当我按照上述步骤尝试时,

  • 我还尝试提供私有IP和端口4444,运行脚本后,服务器代理立即关闭,并且收到错误java.net.socketException:Connection reset by Peer:socket write error。 > JMeter控制台日志 我做了telnet privateip:4444,并通过了test命令。服务器代理返回yep数据。此设置正在本地框上工作。不在AWS盒子上。 请让我知道

  • 我使用的是是一款开源的100%纯驱动程序,适用于。 -我有连接池配置下面 有时,我会遇到以下异常情况:无法从sql server获取连接。我不知道为什么? java.sql.SQLExc0019: I/O错误:连接重置由对等:套接字写入错误net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1052)net.sourceforge.j

  • 我正在尝试使用套接字实现一个HTTP服务器。如果客户端(例如浏览器)请求目录,服务器将显示可用文件列表。当客户端请求文件时就会出现问题。我得到以下错误: stacktrace显示问题来自方法: 但我想不出有什么问题。你能帮帮我吗? 编辑 谢谢大家的回答。在我读了你的答案后,我明白了问题是插座出现错误的时候。这是我的错误代码: 我的新代码是这样的: