首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis:奇怪的协议/网络错误

Redis:奇怪的协议/网络错误
EN

Stack Overflow用户
提问于 2010-09-15 02:47:45
回答 3查看 3K关注 0票数 1

我正在运行Redis,并使用ezmobius的Redis gem1从Ruby连接。

我周期性地(大约每天一次)在我的Rails应用程序中收到一系列异常,这些异常是由Redis返回奇怪的结果引起的。

它们通常是由以下异常触发的:

代码语言:javascript
复制
Redis::ProtocolError: Protocol error, got '3' as initial reply byte                         

代码语言:javascript
复制
Redis::ProtocolError: Protocol error, got '9' as initial reply byte                      

或者有时候

代码语言:javascript
复制
Errno::EAGAIN: Resource temporarily unavailable - Timeout reading from the socket

它通常需要重新启动我的Rails服务器来解决连接问题。我运行的是Fedora Core 8,Rails 2.3.8,Redis gem 2.0.3。我已经安装了system_timer gem。有人知道我怎么才能阻止这些错误吗?

1

EN

回答 3

Stack Overflow用户

发布于 2010-12-13 23:20:00

我刚刚在我的后台工作程序中注意到了同样的事情,它们将任务存储在Redis的队列中,并通过Redis pub/sub进行通信。谷歌的结果表明,如果你在多个线程中使用相同的Redis对象,就会发生这种情况。我不确定在我的应用程序中是否存在这种情况,我将不得不对此进行调查(但我确实有一些线索)。

票数 1
EN

Stack Overflow用户

发布于 2010-12-21 19:26:17

我遇到了一个稍微类似的问题

代码语言:javascript
复制
Errno::EAGAIN: Resource temporarily unavailable - Timeout reading from the socket

原来,我的redis-server在连接时的超时设置为300秒。5分钟后,redis关闭了与我的工作人员的连接,他们正在记录上面的错误。

如果你的套接字超时是每隔x秒发生一次,那么它无疑会扼杀你的“空闲”连接!

票数 1
EN

Stack Overflow用户

发布于 2010-12-20 23:08:54

初始化连接时,请确保传递:thread_safe选项:

代码语言:javascript
复制
Redis.connect(:thread_safe => true)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3711953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档