Rails-Mongoid:生产与开发之间的缓慢问题

时间:2019-05-23 09:17:02

标签: ruby-on-rails ruby ruby-on-rails-3 mongoid

我的Rails应用程序有问题。

我的滑轨版本为 3.2.22 ,红宝石的版本为 2.2.5 ,连接到mongodb 2.6

问题是我在简单甚至更复杂的查询上的性能差异很大。

例如:

我运行rails c development,然后执行我的函数(非常复杂),它在30秒后响应 我运行rails c production,执行与上一个相同的功能,它在6分钟30秒后响应,慢了7倍。 因此,我尝试将配置“开发”复制粘贴到“生产”中,但是结果仍然相同,与Gemfile相同。

我查看了项目的所有代码,环境生产和开发之间没有区别。

您知道这两种环境之间的核心区别吗?有没有人遇到过这个问题?

重要的是,我当然要连接到同一数据库

谢谢。

2 个答案:

答案 0 :(得分:0)

您尚未指定mongo(Ruby驱动程序)和mongoid版本,如果它们很旧,则可能需要根据您的环境升级和/或调整代码。

要确定减速是否发生在数据库或应用程序中,请按照以下说明使用命令监视:https://docs.mongodb.com/ruby-driver/current/tutorials/ruby-driver-monitoring/#command-monitoring

查看与您的查询相对应的日志条目,并记下它们在每种环境中的日志记录方式。通过实现自定义事件订阅者,您还可以保存正在发送的命令,并验证两个环境之间的命令是否相同。

答案 1 :(得分:0)

我明白了!

当我看到生产中的请求数量时,我立即想到了查询缓存。

我为mongo找到了'identity_map_enabled'参数,因此将其更改为true,然后跳魔术!