Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 什么';设置Postgres连接池大小过高的风险是什么?_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails 什么';设置Postgres连接池大小过高的风险是什么?

Ruby on rails 什么';设置Postgres连接池大小过高的风险是什么?,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我正在使用Sidekiq并行运行大量作业,其中许多作业无法连接到数据库,因为我只有5个连接池大小 我想把它增加到15个(至少在本地主机上是这样),但我想知道这可能会带来什么负面后果 设置为Ruby on Rails,默认池大小为5。这取决于许多因素,如: 要分配给数据库池的内存量 你的联系持续多久 连接超时 与应用程序/web服务器相比,数据库服务器的位置 有些连接池还有其他一些调整,例如打开的最小连接数(即使未使用)和打开的最大连接数(看起来像您正在尝试设置的连接数) 我听说,只要打开10个连

我正在使用Sidekiq并行运行大量作业,其中许多作业无法连接到数据库,因为我只有5个连接池大小

我想把它增加到15个(至少在本地主机上是这样),但我想知道这可能会带来什么负面后果


设置为Ruby on Rails,默认池大小为5。

这取决于许多因素,如:

  • 要分配给数据库池的内存量
  • 你的联系持续多久
  • 连接超时
  • 与应用程序/web服务器相比,数据库服务器的位置
  • 有些连接池还有其他一些调整,例如打开的最小连接数(即使未使用)和打开的最大连接数(看起来像您正在尝试设置的连接数)

    我听说,只要打开10个连接,就有可能使网卡饱和

    我认为唯一的答案是根据您拥有的资源监控您的cpu/Memory/io使用情况,这样您就有了某种基线,然后增加连接计数并进行比较

    就我个人而言,我认为如果你没有将服务器推向极限,或者没有一个拥有256MB内存的小型虚拟机,那么你应该可以连接15个连接:)


    将该值设置得太高可能会使postgres允许的开放连接的数量饱和(请检查默认值,但可能在100左右)。如果您过早地关闭服务而不允许它正常地关闭连接,这可能是一个问题。然后,当你尝试重新启动你的应用服务器时,它会出错,说postgres不允许任何更多的连接。这不是将其设置得太高的问题,因为这两种情况都会发生,但它会被定义。加速问题。

    您使用的是哪个连接池?您的连接池大小是否与为Postgres配置的最大连接数匹配?恐怕我不知道这些问题的答案。我使用的是5个连接池(Rails),但我有点像postgresnooby。你会发现,在完成一定数量的作业后,让作业排队实际上比同时运行作业要快。Thant是有道理的,但很多工作都涉及到HTTP请求Craig,所以实际上并发运行它们非常有用,因为有太多的等待和等待,每个查询需要多少I/O/每个查询需要多少内存,等等。您还应该阅读@CraigRinger Correct,如果您正在运行长时间运行的查询,以获取类似于报告的数据,您可能不希望打开许多连接。是的,或者如果您正在使用
    sort\u mem='500MB'
    进行大排序,或者诸如此类。