1

这是我的任务。每隔一个后台任务应该根据一些数据生成 json。此操作不是 CPU 密集型(主要是网络),它会生成 JSON 内容(5-10KB)。操作大约需要 200 毫秒。

此外,我有大约 1000 个客户每隔几秒钟就要求此内容一次。假设它大约是 200 个请求/秒。

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

目前,我已经让 rails 4+nginx+passenger+debian 服务器在做与这项工作相关的其他工作。

作为一名学生,我希望以最具成本效益的方式制作我的服务器,并能够通过以下方式轻松扩展:

  1. 添加更多后台程序作业,生成更多 json
  2. 将请求数量增加到每秒 10 000 个

目前我有带有 2 个 CPU 核心的 linode 2048 ssd。我的问题是:

  1. 我应该为我的后台任务使用什么 gem/解决方案(目前是用 ruby​​ 编写的)
  2. 如何有效地存储实际的 json 并将其从后台程序传递到 rails/nginx。
  3. 如何使服务 json 尽可能快。
4

1 回答 1

1

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

1) 定期后台进程 -> 将数据转储到 Memcache(甚至 gzip 以加快速度)

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

见 Nginx memcache 内置模块http://nginx.org/en/docs/http/ngx_http_memcached_module.html

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

于 2015-05-18T22:24:50.547 回答