繁体   English   中英

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

[英]How to measure memory usage of a Rack or Sinatra app?

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

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

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

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

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

例如,命令bundle exec derailed exec perf:mem在启动时为我的应用程序根提供下面的输出(这里隐藏<3 MiB使用率)。 在我的生产服务器上,Heroku的统计信息告诉了我大约70 MiB的标签。 我的应用程序被称为'padfoot'顺便说一句。

TOP: 71.75 MiB mechanize: 19.0898 MiB (Also required by: /Users/me/dev/padfoot/lib/parsers/transaction_table_parser.rb, /Users/me/dev/padfoot/lib/scrapers/app_details_scraper.rb, and 4 others) mechanize/pluggable_parsers: 11.1055 MiB mime/types: 10.9766 MiB (Also required by: /Users/me/.rvm/gems/ruby-2.3.1/gems/rest-client-1.8.0/lib/restclient/request, /Users/me/.rvm/gems/ruby-2.3.1/gems/rest-client-1.8.0/lib/restclient/payload) padrino: 13.1016 MiB padrino-core: 8.0273 MiB (Also required by: padrino-cache, padrino-admin) padrino-core/application: 3.3555 MiB sinatra/base: 3.1406 MiB (Also required by: padrino-core/ext/sinatra, sinatra/main) padrino-helpers: 3.707 MiB (Also required by: padrino-cache, padrino-admin) padrino/rendering: 3.3203 MiB (Also required by: /Users/me/dev/padfoot/app/app.rb) /Users/me/dev/padfoot/config/apps.rb: 6.9805 MiB /Users/me/dev/padfoot/app/app.rb: 6.8906 MiB aws-sdk-core/s3: 6.3711 MiB /Users/me/dev/padfoot/lib/scrapers/gps/gps_scraper.rb: 4.25 MiB linguistics/en: 4.1523 MiB /Users/me/dev/padfoot/lib/scrapers/digimap/digimap_scraper.rb: 3.0547 MiB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM