Ruby on rails 缩放Rails需要大量Nginx实例

Ruby on rails 缩放Rails需要大量Nginx实例,ruby-on-rails,nginx,scaling,Ruby On Rails,Nginx,Scaling,我们已经构建了一个rails应用程序,并试图支持大约6k个并发用户,平均每分钟发出6个请求,平均rails web事务响应时间为700毫秒 我们做了计算,结果表明我们需要大约420个nginx/passenger实例运行(由于遗留的代码库可能不是线程安全的,所以我们没有在多线程模式下运行)。这似乎需要大量nginx实例来支持这种负载。 目前,我们在每台服务器上运行20个nginx/passenger实例,因此我们需要大约20台服务器才能访问服务该流量所需的420个nginx/passenger实

我们已经构建了一个rails应用程序,并试图支持大约6k个并发用户,平均每分钟发出6个请求,平均rails web事务响应时间为700毫秒

我们做了计算,结果表明我们需要大约420个nginx/passenger实例运行(由于遗留的代码库可能不是线程安全的,所以我们没有在多线程模式下运行)。这似乎需要大量nginx实例来支持这种负载。 目前,我们在每台服务器上运行20个nginx/passenger实例,因此我们需要大约20台服务器才能访问服务该流量所需的420个nginx/passenger实例

以下是数学:

6k Users X 6 RPM Per User = 36k Total RPM
36k X .7 Seconds (AVG response time) = 25200 seconds of processing
25200/60 = 420 instances (Divide by 60 to fit all that processing into 1 min)
有没有人在这方面有经验可以帮助我们? 这就是我们必须运行的服务器数量吗


谢谢

这可能是关于serverfault的一个更好的问题。com数据库的响应时间不计入处理时间。这是一些虚构的计算,你们需要用一些东西来加载测试,比如围城或者网站/服务,然后再进行计算。另外,passenger(如果这是您将要使用的)可以运行多个进程。另外,当我提到响应时间时,我实际上是指web服务器的整个响应时间,包括所有db查询和实际处理时间。我已经用这些细节修改了我的问题。为了减少处理时间,您是否在应用程序中使用了某种缓存,如memcache/redis或http缓存静态文件?我还建议您首先使用seige之类的工具。顺便问一下,您的服务器有多少个内核/ram?这个应用程序是基于电子邮件的吗?