【发布时间】:2018-02-23 22:27:58
【问题描述】:
在半生产环境中使用 nginx、Unicorn、Rails、Postgres 部署。在同一个应用程序中,我有两个用户请求一些信息,其中一个请求大约需要 10 秒。在此期间,其他用户必须坐在那里,因为请求任何 URL 似乎都停止了。
如何解决?
【问题讨论】:
标签: ruby-on-rails postgresql nginx
在半生产环境中使用 nginx、Unicorn、Rails、Postgres 部署。在同一个应用程序中,我有两个用户请求一些信息,其中一个请求大约需要 10 秒。在此期间,其他用户必须坐在那里,因为请求任何 URL 似乎都停止了。
如何解决?
【问题讨论】:
标签: ruby-on-rails postgresql nginx
您需要的是 nginx 后面的应用服务器(使用 nginx 作为负载平衡器和/或反向代理),它具有多个进程和集群支持。
如果没有多个进程,您的应用会受到 Ruby 代码执行的瓶颈,因为一次只有一个进程线程可以运行 Ruby 代码。如果没有多线程,您的应用可能会因 I/O 速度慢而过早地成为瓶颈。
您应该研究一下 Puma、Unicorn 和 Passenger,并确定哪一个适合您。我在不同的设置中使用过 Puma 和 Unicorn,我非常喜欢它们各自的方式。
一般来说,如果你在 nginx 后面使用 Puma、Unicorn 或 Passenger,你将能够并行处理多个请求。
关于这个问题有很多文章,我在这里找到了一些:
【讨论】:
worker_processes设置digitalocean.com/community/tutorials/…