Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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 为什么同一个轻便摩托车查询有时需要更长的时间?_Ruby On Rails_Mongoid_Moped - Fatal编程技术网

Ruby on rails 为什么同一个轻便摩托车查询有时需要更长的时间?

Ruby on rails 为什么同一个轻便摩托车查询有时需要更长的时间?,ruby-on-rails,mongoid,moped,Ruby On Rails,Mongoid,Moped,当请求RubyonRails网页时,有时数据库查询需要2-4倍的时间。我已经为Moped和saw行启用了调试日志记录,如下所示: D, [2013-11-21T23:11:10.889418 #7690] DEBUG -- : MOPED: 127.0.0.1:17203 QUERY database=db collection=col selector={"emailCount"=>{"$gt"=>9}} flags=[:slave_ok] limit=0 ski

当请求RubyonRails网页时,有时数据库查询需要2-4倍的时间。我已经为Moped和saw行启用了调试日志记录,如下所示:

D, [2013-11-21T23:11:10.889418 #7690] DEBUG -- :   MOPED: 127.0.0.1:17203 QUERY        database=db collection=col selector={"emailCount"=>{"$gt"=>9}} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (42.4671ms)
D, [2013-11-21T23:11:13.403011 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY        database=db collection=col selector={"emailCount"=>{"$gt"=>9}} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (127.4977ms)
对查询和标志进行编校后,时间会有所不同:

D, [2013-11-21T22:28:16.268263 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY [...redacted...] (163.0192ms)
D, [2013-11-21T22:28:17.872661 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY [...redacted...] (89.7279ms)
D, [2013-11-21T22:30:26.645921 #7690] DEBUG -- :   MOPED: 127.0.0.1:17203 QUERY [...redacted...] (38.0206ms)
D, [2013-11-21T22:37:47.464478 #7690] DEBUG -- :   MOPED: 127.0.0.1:17203 QUERY [...redacted...] (42.1586ms)
D, [2013-11-21T22:39:53.393541 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY [...redacted...] (154.6400ms)
D, [2013-11-21T22:41:16.217997 #7690] DEBUG -- :   MOPED: 127.0.0.1:17203 QUERY [...redacted...] (38.3251ms)
D, [2013-11-21T22:41:29.540417 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY [...redacted...] (124.6662ms)
D, [2013-11-21T22:41:36.281601 #7690] DEBUG -- :   MOPED: 127.0.0.1:17203 QUERY [...redacted...] (37.7121ms)
D, [2013-11-21T23:11:07.696951 #7690] DEBUG -- :   MOPED: 127.0.0.1:17203 QUERY [...redacted...] (41.8334ms)
D, [2013-11-21T23:11:10.889418 #7690] DEBUG -- :   MOPED: 127.0.0.1:17203 QUERY [...redacted...] (42.4671ms)
D, [2013-11-21T23:11:13.403011 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY [...redacted...] (127.4977ms)
D, [2013-11-21T23:11:16.796217 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY [...redacted...] (166.5795ms)
D, [2013-11-21T23:11:22.210991 #7690] DEBUG -- :   MOPED: 54.213.xxx.xx:17203 QUERY [...redacted...] (195.2744ms)
我想知道为什么轻便摩托车有时使用IP 127.0.0.1,有时使用IP 54.213.xxx.xx?为什么查询54.213.xxx.xx需要2-4倍的时间?要生成这些日志条目,我只需刷新一个网页

理想情况下,我希望所有查询都需要大约40毫秒,而不是偶尔需要大约160毫秒

这是我的
mongoid.yml
,如果相关的话:

development:
  sessions:
    default:
  database: db
  hosts:
    - localhost:17203
    - xxx.no-ip.biz:27017
  options:
    consistency: :eventual
  username: user
  password: pass

副本集中有两个Mongo。localhost:17203(或54.213.xxx.xx)上的是次要成员。xxx.no ip-.biz解析为174.21.xxx.xxx,因此我知道我的主要成员没有用于读取(如我所料)。

当Moped连接到您的mongoDB服务器时,它会将服务器的主机名解析为ip地址。您的web应用服务器可能在不同的工作进程中处理每个请求,并且每个进程对主机名的解析方式也不同


我不是网络方面的专家,但很可能你的DNS设置搞砸了。有时localhost解析为框的外部IP地址,而不是预期的127.0.0.1环回地址。因此,您的请求必须发送到ISP的DNS服务器,在那里得到解决,然后直接返回到同一个框中,而不是在本地网络中进行通信。

您可以共享您的
mongoid.yml
吗?我已将问题编辑为包含我的mongoid.yml。谢谢