AWS EC2上doredis中的套接字连接错误

时间:2012-11-21 10:26:52

标签: r parallel-processing amazon-ec2 redis

我已经设置了一个用作redis worker的实例。所有港口都是开放的。当我发出

library("doRedis")
redisWorker(host="ZZZ-23-20-XXX-XXX.compute-1.amazonaws.com", queue="jobs")

我收到错误

Error in socketConnection(host, port, open = "a+b", blocking = TRUE, timeout = timeout) : 
  cannot open the connection
In addition: Warning message:
In socketConnection(host, port, open = "a+b", blocking = TRUE, timeout = timeout) :
  ZZZ-23-20-XXX-XXX.compute-1.amazonaws.com:6379 cannot be opened

任何想法可能会发生什么?我也使用了inernal EC2 IP(10.XXX.XXX.ZZZ)仍然得到相同的错误。服务器已启动,正在运行并且ping能够

我正在运行最新且最好的R,doRedis,Ubuntu 12.04全部更新。之前已经讨论过,但没有找到解决方案。 doRedis with strange socket connection error in Ubuntu Linux, R, and RStudio

1 个答案:

答案 0 :(得分:2)

虽然使用registerDoRedis(),但我遇到了类似的问题,因为你无法设置超时,我相信问题在于'redisConnect'函数中使用的超时值。

在R中,如果运行fix(redisConnect),您可以看到超时的默认值如下:

redisConnect< - function(host =“localhost”,port = 6379,returnRef = FALSE,     超时= 2147483647L)

似乎这个巨大的超时值导致了这个问题。要检查它在线上的更改,请使用:

con <- socketConnection(host, port, open = "a+b", blocking = TRUE, 
    timeout = timeout)

对此:

con <- socketConnection(host, port, open = "a+b", blocking = TRUE, 
    timeout = 30)

我发现虽然有效,但是一旦重新加载包,更改就会被删除。我今天刚发现这个,所以会向开发者提交一个bug。顺便说一句,我在OSX上运行R 2.15。

您正在使用的函数默认为超时30,或者您可以尝试在函数调用中设置它以确保而不是修复()基础代码。