Sinatra Sinatra 的 timeout 设置的问题

Lhuo · 2017年05月08日 · 最后由 small_fish__ 回复于 2017年05月09日 · 6482 次阅读

opennebula 用的 sinatra 框架,要获取一个较大的数据,后台需要用 60 多秒,前端在 30 秒的时候报错 502 错误。## 请问谁知道怎么配置 sinatra 的响应时间???

首先,这种大量查询,如果优化不上去,应该换一个思路,预处理,减少查询的时候半天没响应的问题,你现在这样直接查询会把应用堵死的。

回到问题本身,要看你是用什么部署的 Unicorn, Puma 之类的都有 Timeout 的设置项的

做起来很简单:

在 web server (Apache, Nginx) 上设置等待 upstream 的时间为 60 秒以上,app server (Unicorn, Puma) 上延长 timeout 的时间。

但是,这很危险啊!

长达 60 秒的请求处理时间,意味着别人只要每分钟向你的服务器发送 10 个请求,就可以轻松让你服务器完全无法处理其他请求了。所以,正规互联网产品,超过 1 秒的请求都应该扔进后台任务。企业内网产品,超过 10 秒的请求也应该扔进后台任务。否则,很快就拥塞了。

做过应用把超时设置到 300s 的。。😂

需要 登录 后方可回复, 如果你还没有账号请 注册新账号