Ruby on rails 什么';设置Postgres连接池大小过高的风险是什么?
我正在使用Sidekiq并行运行大量作业,其中许多作业无法连接到数据库,因为我只有5个连接池大小 我想把它增加到15个(至少在本地主机上是这样),但我想知道这可能会带来什么负面后果Ruby on rails 什么';设置Postgres连接池大小过高的风险是什么?,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我正在使用Sidekiq并行运行大量作业,其中许多作业无法连接到数据库,因为我只有5个连接池大小 我想把它增加到15个(至少在本地主机上是这样),但我想知道这可能会带来什么负面后果 设置为Ruby on Rails,默认池大小为5。这取决于许多因素,如: 要分配给数据库池的内存量 你的联系持续多久 连接超时 与应用程序/web服务器相比,数据库服务器的位置 有些连接池还有其他一些调整,例如打开的最小连接数(即使未使用)和打开的最大连接数(看起来像您正在尝试设置的连接数) 我听说,只要打开10个连
设置为Ruby on Rails,默认池大小为5。这取决于许多因素,如:
将该值设置得太高可能会使postgres允许的开放连接的数量饱和(请检查默认值,但可能在100左右)。如果您过早地关闭服务而不允许它正常地关闭连接,这可能是一个问题。然后,当你尝试重新启动你的应用服务器时,它会出错,说postgres不允许任何更多的连接。这不是将其设置得太高的问题,因为这两种情况都会发生,但它会被定义。加速问题。您使用的是哪个连接池?您的连接池大小是否与为Postgres配置的最大连接数匹配?恐怕我不知道这些问题的答案。我使用的是5个连接池(Rails),但我有点像postgresnooby。你会发现,在完成一定数量的作业后,让作业排队实际上比同时运行作业要快。Thant是有道理的,但很多工作都涉及到HTTP请求Craig,所以实际上并发运行它们非常有用,因为有太多的等待和等待,每个查询需要多少I/O/每个查询需要多少内存,等等。您还应该阅读@CraigRinger Correct,如果您正在运行长时间运行的查询,以获取类似于报告的数据,您可能不希望打开许多连接。是的,或者如果您正在使用
sort\u mem='500MB'
进行大排序,或者诸如此类。