我的应用程序是建立在rails上的,网络服务器是puma。我需要从数据库中加载数据,加载所有数据需要60多秒。每次我向服务器发送get请求时,我都要等待60秒以上。请求获取的超时是60秒,所以我总是得到504网关超时。我在puma配置中找不到更改请求超时的位置。如何将请求超时设置为超过60秒?谢谢你,谢谢
tgabmvqs1#
config/puma.rb
Source
b0zn9rqh2#
这里的504错误是在Rails服务器前面的网关,例如它可能是Cloudflare或nginx等。因此,设置将在那里。你必须在那里增加超时时间,在rails/puma中也是如此。
93ze6v8z3#
默认情况下,Puma不会根据时间超时请求如果你看到的是
Puma caught this error: R equest ran for longer than 30000ms (Rack::Timeout::RequestTimeoutErro r
这意味着您有某种中间件可以提供这种行为,在上面的例子中是https://github.com/zombocom/rack-timeout在你的代码库中搜索Rack::Timeout,它看起来像这样:
Rack::Timeout
Rails.application.config.middleware.insert_before Rack::Runtime, Rack::Timeout, service_timeout: Integer(30000)
更改配置以增加超时时间,或者完全禁用(不插入)中间件。
ajsxfq5m4#
最好是,你应该优化你的代码和查询,以便在更快的时间内响应,这样在生产环境中就不会有大流量进入你的应用程序的瓶颈。如果你真的想增加响应时间,那么你可以使用机架超时来做到这一点:https://github.com/kch/rack-timeout
4条答案
按热度按时间tgabmvqs1#
config/puma.rb
中使用worker_timeout。示例:*Source
b0zn9rqh2#
这里的504错误是在Rails服务器前面的网关,例如它可能是Cloudflare或nginx等。
因此,设置将在那里。你必须在那里增加超时时间,在rails/puma中也是如此。
93ze6v8z3#
默认情况下,Puma不会根据时间超时请求
如果你看到的是
这意味着您有某种中间件可以提供这种行为,在上面的例子中是https://github.com/zombocom/rack-timeout
在你的代码库中搜索
Rack::Timeout
,它看起来像这样:更改配置以增加超时时间,或者完全禁用(不插入)中间件。
ajsxfq5m4#
最好是,你应该优化你的代码和查询,以便在更快的时间内响应,这样在生产环境中就不会有大流量进入你的应用程序的瓶颈。
如果你真的想增加响应时间,那么你可以使用机架超时来做到这一点:
https://github.com/kch/rack-timeout