Ruby Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)

zhangkaizhao · 2025年10月13日 · 最后由 ericguo 回复于 2025年10月21日 · 591 次阅读

Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)

https://speakerdeck.com/ioquatix/building-deploying-and-monitoring-ruby-web-applications-with-falcon-kaigi-on-rails-2025

Page 289:

Let’s take Ruby to the next level with Async, Falcon and Rails.

via https://x.com/ioquatix/status/1976256874367549936

falcon 能代替 Nginx 或 Caddy 吗?

w7938940 回复

https://github.com/socketry/falcon 建议在生产环境中不要这样做,作者说的是 I saw an opportunity

Once I had something working, I saw an opportunity to simplify my development, testing and production environments, replacing production (Nginx+Passenger) and development (Puma) with Falcon.

可以试试 Rails 8 开始提供的 Thruster (Rails 8 以前版本应该也能用),用下来感觉挺好的。 目前用 Thruster + Puma,还没有踩到什么坑。如果没有特别复杂的 HTTP Server 需求,可以替换 Nginx 或 Apache。

Gao-Jun 回复

Falcon 支持在应用层面使用 fiber 并发,和 thruster 解决的不是一个问题。

Peter 回复

这句话是说可以在生产直接取代 Nginx+Passenger 组合,只用 falcon 就可以。我们最近也在研究这个技术栈。Async 对于 Ruby 做 LLM 开发是刚需,不然并发能力只有几个就太难受了。

lyfi2003 回复

不然并发能力只有几个就太难受了。

这是指使用 SSE 实现实时传输时的并发能力吗?对应的服务器配置是?

coderliu 回复

SSE 的话那更差了

用 asyncjob 也不会太好

lyfi2003 回复

请问一下是因为什么呢?

zhandao 回复

每个 LLM 调用都要占一个完整的 Thread,一般来说要有十多秒,甚至 2 分钟。Rails + puma 最佳配置是 5 个 Thread。那并发能力可想而知。Asyncjob 也不推荐开太多 Thread。这种并发模型能力有限。

lyfi2003 回复

感谢回复。这里的 asyncjob 不是指 Samuel 的那个吗?

Samuel 的 asyncjob 也是 fiber 并发,应该是正适合于 LLM 这类 IO 场景的,并不受 Ruby Thread GVL 的限制。

(但我也没有生产用过,所以想了解下大佬的实际使用情况)

lyfi2003 回复

https://github.com/Eric-Guo/thrustOauth2idServer/pull/1 这就是今天我想分享的,直接用 Go 写…

Gao-Jun 回复

你和我想在一起了,不过我更近了一步,我直接把 sponge 生成的程序变成了 thruster……

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