如何衡量Rack或Sinatra应用程序的内存使用情况?

时间:2012-08-30 13:27:51

标签: ruby memory-management sinatra rack

如何衡量Rack或Sinatra应用程序的内存使用情况?

据我所知,这可能在很大程度上取决于它的部署方式。 但是,您如何基本了解它使用了多少内存?

2 个答案:

答案 0 :(得分:2)

如果您正在使用乘客,您可以尝试乘客记忆统计数据,它可以让您按站点分割出一个很好的概览,否则您可以通过使用top,shift-M和寻找红宝石来了解内存使用情况。过程

答案 1 :(得分:0)

尽管它的名字,我已经成功地使用derailed_benchmarks gem来动态地对Padrino(基于Sinatra构建)应用程序中的内存使用情况进行基准测试。 docs描述了如何为非Rails Rack应用执行此操作 - 您只需在simple Rake task中定义DERAILED_APP即可告诉它如何启动您的应用。

它可以在本地主机上使用真实服务器(我使用Unicorn)运行,甚至可以使用生产数据库(定义{{​​1}})运行。如有必要,它还可用于测试任何端点和绕过身份验证。用例包括随着时间的推移使用内存(查找泄漏)以及在启动时为给定端点分析gems /所需的库内存(启动时使用大量内存)。

例如,命令DATABASE_URL在启动时为我的应用程序根提供下面的输出(此处隐藏< 3 MiB使用率)。在我的生产服务器上,Heroku的统计信息告诉了我大约70 MiB的标签。我的应用程序被称为'padfoot'btw。

bundle exec derailed exec perf:mem