ruby-on-rails – Heroku Rails – 关闭Active Record Postgres
我有一个我在heroku上托管的rails 4应用程序.在使用多线程服务器(puma)
https://devcenter.heroku.com/articles/concurrency-and-database-connections时,他们提供了有关如何管理数据库连接池的一些具体建议
当我为我的应用程序运行负载测试时出现错误 – 无法连接到数据库.当每个页面被点击时,rails会初始化活动记录,即使我没有在该页面上进行任何查询,也不会引用任何模型. 我的问题是: 如何制作一种白名单(或黑名单),以便不为这些特定控制器操作使用数据库连接初始化活动记录?在初始化程序中? 理想情况下,我会在heroku(40个连接)上运行更便宜的postgres服务,因为我知道我的应用程序不经常使用数据库.如果流量达到更高,40个连接将开始出错,这对于那些不会在这些请求上使用db的应用程序来说似乎很愚蠢. 我读到了如何禁用整个应用程序的活动记录:Disable ActiveRecord for Rails 4 但是我该如何有选择地启用它呢?这里是否有任何其他不同的性能考虑因素(不要急于加载这些东西或任何其他陷阱) 解决方法
在你的application_controller.rb中
before_filter :maybe_disconnect_db def maybe_disconnect_db ActiveRecord::Base.remove_connection() if ActiveRecord::Base.connected? end def maybe_connect_db ActiveRecord::Base.establish_connection() unless ActiveRecord::Base.connected? end 然后为每个需要数据库连接添加的控制器/操作 skip_before_filter :maybe_disconnect_db,#only or unless filter here before_filter :maybe_connect_db,#only or unless filter here 这应该为任何特定的db请求建立连接,并断开任何不需要它的请求,同时还在没有操作的情况下连续处理多个db请求,并且在没有操作的情况下连续处理多个非db请求. ActiveRecord::Base.remove_connection ActiveRecord::Base.establish_connection (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – 使用GET或POST,DateTime的MVC模型绑定是不同的
- Cocos2dx 学习笔记26 CCNotificationCenter的使用
- 异步/Ajax 加载 Kindeditor 失败
- 当独特的索引存在时,Oracle 10g和11g之间的REF CURSOR有不同
- user-interface – Flutter – 容器onPressed?
- 十个随机数排列(vb代码)
- ruby-on-rails – 列上的WiceGrid默认过滤器
- ruby-on-rails – Capybara:如何测试页面的样式表?
- nandflash移植,已做过,但是不是很理解,收录平常看着玩
- c# – 为什么IEnumerable.Any为一个假布尔的集合返回True?