我的Rails应用程序有问题。
我的滑轨版本为 3.2.22 ,红宝石的版本为 2.2.5 ,连接到mongodb 2.6 。
问题是我在简单甚至更复杂的查询上的性能差异很大。
例如:
我运行rails c development,然后执行我的函数(非常复杂),它在30秒后响应 我运行rails c production,执行与上一个相同的功能,它在6分钟30秒后响应,慢了7倍。 因此,我尝试将配置“开发”复制粘贴到“生产”中,但是结果仍然相同,与Gemfile相同。
我查看了项目的所有代码,环境生产和开发之间没有区别。
您知道这两种环境之间的核心区别吗?有没有人遇到过这个问题?
重要的是,我当然要连接到同一数据库。
谢谢。
答案 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,然后跳魔术!