有人可以评论转移到Sinatra的每个过程的改进吗?
我发现我的Web API每个Passenger Rails 3进程使用大约100MB。我想知道如果我换到Sinatra会有什么改进。
答案 0 :(得分:9)
这是一个随机的非真实世界的基准,可以给你一点点想法:
| Real | Private | Vir. Priv. |
---------------+---------+---------+------------|
[1] Rails | 38.6MB | 35.9MB | 76.3MB |
---------------+---------+---------+------------|
[2] Sinatra | 18.7MB | 16.2MB | 51.7MB |
---------------+---------+---------+------------|
[3] + Haml | 19.6MB | 17.0MB | 53.7MB |
---------------+---------+---------+------------|
[4] + Sequel | 24.4MB | 21.7MB | 54.8MB |
---------------+---------+---------+------------|
require 'sinatra'; get('/'){ "Hello" }
,提出1请求。get ('/'){ haml "%p Hello" }
,发出1个请求。DB = Sequel.sqlite
,提出1个请求。所有在OS X上测试过。这个测试显示a)Sinatra比Rails更加简单,b)如果你想要任何有意义的话,你需要比较苹果和苹果(在你选择的操作系统上);数字。具有相同功能的相同应用程序。
我使用Thin + Sequel + Haml + pg在Windows上运行的真实应用程序往往每个实例运行大约50-90MB(取决于我在反向代理后运行2-4个实例的应用程序)。 YMMV。
答案 1 :(得分:0)
首先,您如何衡量内存使用情况?
建议您使用 passenger-memory-stats 来更准确地了解内存使用情况(而不是顶部等)。
一般来说,如果不自己做一些测试就很难说 - 内存使用情况可能会有很大差异,具体取决于你的应用程序实际上做了什么,而Sinatra并不一定意味着更小的内存占用。
例如,如果您使用的是ActiveRecord,则生产中的框架会缓存模型以减少加载时间。这将独立于您正在使用的应用程序框架。
虽然可能有一些事情可以调整你的Rails堆栈。
使用Ruby版本进行实验。 当与乘客一起使用时,REE可能具有一些记忆益处。 Ruby 1.9.2有很多性能改进。
查看乘客记忆选项:
您可以做的另一件事是删除Rails堆栈本身的未使用部分(使用各种Rails Rack options)。