gpt4 book ai didi

ruby-on-rails - 请求卡在 PG::Connection#async_exec

转载 作者:行者123 更新时间:2023-11-29 13:51:36 27 4
gpt4 key购买 nike

我正在尝试使 rails 应用程序在 passenger 下运行,但到目前为止还没有成功。它使用 sequel 连接到 postgresql。随机请求需要太多时间才能完成。我能够找到应用程序将时间花在哪里:

 %self      total      self      wait     child     calls  name
 99.92     65.713    65.713     0.000     0.000        5   PG::Connection#async_exec
  0.00      0.002     0.002     0.000     0.000      264   Set#delete
...

据推测,webrick 不会发生这种情况,我将尝试在 unicorn 下运行它。

这里有一些 related links .

我正在使用 passenger-5.0.30ruby-2.3.0postgresql-9.4pg-0.19 .0rails-5.0.0.1unicorn-5.1.0 也是如此。该应用程序在 lxc 容器中运行。主机和 guest 操作系统是 ubuntu/xenial

最佳答案

问题在我们开始重新建立与数据库的连接后得到解决。我们在项目中使用 sequel,Passenger 仅在使用 ActiveRecord 时自行处理问题。

为了扩展它,默认情况下,Passenger 对 ruby​​ 应用程序使用智能生成。它首先产生预加载器进程,加载框架和所有库。之后,预加载器进程在需要时产生工作进程,处理请求。产生工作进程时,所有文件描述符都从预加载器进程继承。因此,如果您不重新建立与数据库的连接,则所有工作进程共享一个由预加载器建立的连接。这会导致各种奇怪的行为。比如请求花费的时间太长。

在此之前,我们还将处理 WebSocket 连接移到了一个单独的进程中。但是不确定它是否导致了这个问题。

更多相关信息:

Disconnect If Using Forking Webserver with Code Preloading
Unintentional file descriptor sharing
Running the Action Cable server on the same host and port, under a sub-URI

关于ruby-on-rails - 请求卡在 PG::Connection#async_exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40044636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com