具有后台架构的高负载rails服务器

时间:2015-05-13 22:17:18

标签: ruby-on-rails nginx high-load

这是我的任务。 每个第二个背景任务都应该根据一些数据生成json。此操作不是cpu密集型(主要是网络),它生成JSON内容(5-10KB)。操作大约需要200ms。

此外,每隔几秒我就有大约1000个客户要求提供此内容。假设这是大约200个请求/秒。

服务器应该只输出当前的实际json。

目前我已经有rails 4 + nginx + passenger + debian sever做其他工作,与此工作有关。

作为一名学生,我希望以最具成本效益的方式使我的服务器具有以这种方式轻松扩展的能力:

  1. 添加更多的背景作业,生成更多json的
  2. 请求数量增加到每秒10 000
  3. 目前我有2个CPU内核的linode 2048 ssd。我的问题是:

    1. 我应该为我的背景任务使用什么样的宝石/解决方案(目前用红宝石编写)
    2. 如何有效地存储实际的json并将其从backgrounder传递给rails / nginx。
    3. 如何尽快服务json。

1 个答案:

答案 0 :(得分:1)

你提到“服务器应该只输出当前实际的json”,我想JSON生成可能不会成为瓶颈,因为你可以将它缓存到Memcache并直接提供Memcache:

1)定期后台处理 - >将数据转储到Memcache(甚至gzip加速)

2)用户 - > Nginx - >内存缓存

请参阅模块http://nginx.org/en/docs/http/ngx_http_memcached_module.html

中内置的Nginx内存缓存

瓶颈是任何具有阻塞机制,GIL,IO锁等的后端,通过使用中间Memcache数据点拆分请求/响应周期来尝试避免这些类型的问题。