- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我们在大型应用程序的生产中使用 Sneakers gem。有时负载可能非常大,以至于一个特定队列可能包含超过 250_000 条消息。在这种情况下,异常
ActiveRecord::ConnectionTimeoutError:
could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use
定期发生。
对于数据库,我们使用基于 PostgreSQL 9.6 的 Amazon RDS。 max_connections
PostgreSQL 配置值为 3296。
我们的database.yml
文件:
production:
adapter: postgresql
encoding: utf8
pool: 40
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
我想我们可以增加一个pool
值,但我找不到关于如何计算最大可能值的信息,所以它不会破坏任何东西。
此外,使用 Sneakers gem 进行后台处理的应用程序的副本单独存在(但使用相同的数据库)并且可以单独配置。但现在它具有相同的 database.yml
配置。运动鞋 gem 配置文件:
production:
heartbeat: 2000
timeout_job_after: 35
exchange_type: :fanout
threads: 4
prefetch: 4
durable: true
ack: true
daemonize: true
retry_max_times: 5
retry_timeout: 2000
workers: 4
我们在基本运行时应用程序中的连接池没有问题,但是 ActiveRecord::ConnectionTimeoutError
经常发生在 workers 中,这是一个非常大的问题。
所以,请帮我重新配置databese.yml
文件:
pool
选项的最大可能值如果数据库 max_connections
值为 3296?pool
选项的最大可能值将 Sneakers gem 与上述配置一起使用时?ActiveRecord::ConnectionTimeoutError
?提前致谢。
最佳答案
在等待答案的同时,我一直在寻找解决方案。
而且,我想,我最基本的问题是连接池大小。
在运动鞋 gem 问题跟踪器上,我发现了一个 comment使用计算满载时所需连接数的公式。我稍微更改了评论中的代码,所以现在它会考虑每个工作人员的个人设置进行计算:
before_fork = -> {
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.connection_pool.disconnect!
Sneakers.logger.info('Disconnected from ActiveRecord!')
end
}
after_fork = -> {
def count_pool_size
workers = ::Sneakers::Worker::Classes
default_threads_size = ::Sneakers.const_get(:CONFIG)[:threads]
base_pool_size = 3 + workers.size * 3
if Sneakers.const_get(:CONFIG)[:share_threads]
base_pool_size + default_threads_size
else
base_pool_size + connections_per_worker(workers, default_threads_size)
end
end
def connections_per_worker(classes, default)
classes.inject(0) do |sum, worker_class|
sum + (worker_class.queue_opts[:threads] || default)
end
end
def reconfig?
Rails.env.production?
end
ActiveSupport.on_load(:active_record) do
config = Rails.application.config.database_configuration[Rails.env]
config.merge!('pool' => count_pool_size) if reconfig?
ActiveRecord::Base.establish_connection(config)
Sneakers.logger.info("Connected to ActiveRecord! Config: #{config}")
end
}
总结:对于所有工作人员,我需要在最大负载下限制近 600 个连接。但我只有 40 个。现在,我将使用上面的代码。希望这会有所帮助。
关于ruby-on-rails - rails +运动鞋 : could not obtain a connection from the pool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55229693/
这是我的第一个主题here的继续,该主题是有关如何使用代码模拟屏幕触摸的。 我想将此功能整合到 float 的屏幕聊天头中(就像facebook所做的那样)。因此,基本上,当我点击聊天头时,此服务将模
安装应用程序时遇到以下问题: 使用Worklight控制台,我正在上载.wlapp文件,删除已部署的应用程序,然后尝试再次上载相同的.wlapp。 然后,Worklight Console被卡住,甚至
我进行了 LDAP 目录搜索并收到了一些结果。我需要迭代这些结果并显示每个条目的 Dn。 在我的测试环境中,我通过获取entryDN属性的值来返回Dn值。 在生产环境中,entryDN 属性始终返回
在调试器中,当执行这样一行代码时我“卡住”了:lock (myvar) 显然其他人持有myvar。但是我希望在这一行 myvar 应该是免费的。所以我想知道代码的哪一部分包含 myvar (来自另一个
我正在做一些序列化,其中还包含需要存储为字符串的 IFile 路径。 我在插件项目中使用这个 IFile。为调试或运行 Eclipse 启动一个新工作区。这个测试工作区的根目录相对于插件文件夹。我的问
我知道这个问题已经得到回答,但我不明白人们到底在做什么(关于证书,ssl),他们都使用本地主机而不是我。 我使用此示例作为示例 OpenIdConnect 我正在使用: 一个网络应用程序 一个 Web
我正在尝试获取当前星期以在SQLite中进行日期比较。 我上个月,去年,今天,昨天都没问题...但是找不到当前星期的解决方案。 我尝试了很多事情,例如: SELECT tastings.* FROM
我有兴趣将大部分使用Thrust GPU库编写的代码移植到多核CPU。值得庆幸的是,the website说推力代码可以与诸如OpenMP/Intel TBB之类的线程环境一起使用。 我在下面编写了一
我需要创建一个 PHP 应用程序,在给定主题标签的情况下,它会向我返回一个 XML,其中包含与该主题标签相关的帖子。 我在开发者部分登录 Instagram 并填写了应用程序设置表格。 已生成“客户端
当我从 Gradle 任务运行集成测试时,我的集成测试失败。 org.springframework.data.solr.UncategorizedSolrException: **SolrCore
这个问题已经有答案了: java.lang.IllegalStateException: Iterator already obtained (1 个回答) 已关闭 8 年前。 所以我写了一个小Jav
谁能告诉我为什么会出现以下异常? java.rmi.ServerException: RuntimeException; nested exception is: java.lang.Ille
当我尝试从 WCF 测试客户端运行我的应用程序时,我收到以下错误: Error: Cannot obtain Metadata from http://localhost:53867/MyAPI.sv
我有几个变量分配给同一个函数。属性“name”为“”,因为此函数是匿名的; 也没有涉及函数调用,因此没有被调用者。 JS有没有办法通过自己实现的反射算法获取变量名? 例如 var x = functi
只是想知道是否有人知道如何查询 Facebook Credits (FBC) API 以获取用户拥有的信用数?我的应用程序有此要求,并且 FBC API 中没有对此进行解释或提及。 谢谢 最佳答案 也
我正在使用 Spring Batch 3.0.5。关于 MySql 序列表的引擎类型的相同问题。与 spring-batch-storage-engine-as-myisam-than-innodb
我想我遗漏了一些明显的东西,但我就是想不通如何获取 CCMenuItemFont 的标签。 背景我正在为 iPad 构建一个简单的刽子手游戏。为了输入下一个猜测,我在 UI 中添加了 26 个按钮(每
我正在开发一个 Android 应用程序 (API 15) 并在尝试编写单元测试时遇到以下问题: 我使用 android.os.Parcel 来保存一个类(例如,如果屏幕翻转)并将它发送到另一个 Ac
我正在利用 C++ 全局变量的构造函数的行为在启动时以简单的方式运行代码。这是一个非常简单的概念,但有点难以解释,所以让我粘贴代码: struct _LuaVariableRegistration {
在 C# 中,如何获取对给定类的基类的引用? 例如,假设您有一个特定的类 MyClass,并且您想要获取对 MyClass 的父类(super class)的引用。 我的想法是这样的: Type s
我是一名优秀的程序员,十分优秀!