Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Mongo::EC2中反复出现操作故障,该怎么办?_Ruby On Rails_Ruby_Mongodb_Amazon Ec2_Mongoid - Fatal编程技术网

Ruby on rails Mongo::EC2中反复出现操作故障,该怎么办?

Ruby on rails Mongo::EC2中反复出现操作故障,该怎么办?,ruby-on-rails,ruby,mongodb,amazon-ec2,mongoid,Ruby On Rails,Ruby,Mongodb,Amazon Ec2,Mongoid,我在日志中看到很多异常: A Mongo::OperationFailure occurred in foo#bar: Mongo::OperationFailure mongo (1.6.2) lib/mongo/util/tcp_socket.rb:76:in `read' 我使用Mongoid作为我的Ruby驱动程序 不确定这是否与连接池有关,但事实上,这是我的mongoid.yml: production: host: xxx port: 27017 username:

我在日志中看到很多异常:

A Mongo::OperationFailure occurred in foo#bar:

Mongo::OperationFailure
mongo (1.6.2) lib/mongo/util/tcp_socket.rb:76:in `read'
我使用Mongoid作为我的Ruby驱动程序

不确定这是否与连接池有关,但事实上,这是我的mongoid.yml:

production:
  host: xxx
  port: 27017
  username: xxx
  password: xxx
  database: foo
  logger: false
  pool_size: 200
  max_retries_on_connection_failure: 5
我知道EC2可能会出现暂时性的网络问题,但这几乎已成为常态。解决这个问题的最好办法是什么

仅作为背景信息,我正在运行JRuby 1.6.7

  • 您运行MongoDB的是哪种EC2实例?它们应该至少是一个
    m1.large
  • 您的MongoDB集群中有多少台服务器?应该至少有2加1个仲裁人。它们是如何配置的
  • 您是否已将
    TCP keepalive
    超时设置为
  • 您是否使用和检查了数据库服务器上的基本统计信息
  • 您是否安装并使用了10gen的
如果您使用过一些监控工具,他们会告诉您什么?如果没有,那么就使用它们并报告您发现的内容。

  • 您运行MongoDB的是哪种EC2实例?它们应该至少是一个
    m1.large
  • 您的MongoDB集群中有多少台服务器?应该至少有2加1个仲裁人。它们是如何配置的
  • 您是否已将
    TCP keepalive
    超时设置为
  • 您是否使用和检查了数据库服务器上的基本统计信息
  • 您是否安装并使用了10gen的
如果您使用过一些监控工具,他们会告诉您什么?如果你没有,那么就使用它们并报告你的发现。

这可能与以下事实有关:

# Connect nonblock is broken in current versions of JRuby
对于
lib/mongo/util/tcp_socket.rb中的
connect

发生错误:

所以这可能是一个
EIO/IOError

也许尝试使用Ruby而不是JRuby

希望这有帮助

(如果我不得不做出一个没有受过教育的猜测,我可能会后悔说,那就是因为JRuby必须使用阻塞套接字
connect
,而不是非阻塞套接字,
EIO/IOError
read
期间发生了大量的读取/连接。)

这可能与以下事实有关:

# Connect nonblock is broken in current versions of JRuby
对于
lib/mongo/util/tcp_socket.rb中的
connect

发生错误:

所以这可能是一个
EIO/IOError

也许尝试使用Ruby而不是JRuby

希望这有帮助


(如果我不得不做出一个我可能会后悔说的没有受过教育的猜测,那就是因为JRuby必须使用阻塞套接字
connect
而不是非阻塞套接字,
EIO/IOError
read
期间发生了大量的读取/连接。)

mongod日志中是否存在警告/错误?能否共享
mongostat
的快照?mongod日志中是否存在警告/错误?能否共享
mongostat
的快照?
rescue Errno::EINTR, Errno::EIO, IOError 
  raise OperationFailure 
end