【问题标题】:Profiling Sinatra with rack-perftools_profiler (using net/http)使用 rack-perftools_profiler 分析 Sinatra(使用 net/http)
【发布时间】:2012-12-08 14:13:16
【问题描述】:

我的一个 Sinatra 操作使用 net/http 执行另一个请求并根据响应计算一些内容:

api_response = Net::HTTP.get_response(uri)

它的作用就像一个魅力,但是当我尝试对此进行分析时:

configure do
  use ::Rack::PerftoolsProfiler, default_printer: 'pdf', frequency: 4000, mode: :walltime
end

(并将?profile=true 放入请求的参数中,我得到了这个:

Errno::EADDRINUSE - Address already in use - connect(2):
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `initialize'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `open'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `connect'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:744:in `start'
    /Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:454:in `get_response'

知道发生了什么吗?

【问题讨论】:

  • 我从错误“地址已在使用”中猜测,其他东西正在使用您尝试运行探查器的端口。确保你没有在同一个端口上运行其他东西。
  • 是否可以在特定端口上设置分析器?
  • 尝试用set :port, 9494更改Sinatra的端口。
  • 不,这不起作用:(

标签: ruby http profiling sinatra rack


【解决方案1】:

我尝试以与您相同的方式设置这些。

require 'sinatra'
require 'rack/perftools_profiler'
require 'net/http'

configure do
  use ::Rack::PerftoolsProfiler, default_printer: 'pdf', frequency: 4000, mode: :walltime
end

get "/" do
  uri = URI('http://google.com')
  api_response = Net::HTTP.get_response(uri)
end

它在 ruby​​ 1.9.3-p286 和 rack-perftools_profiler (0.6.1) 上运行没有问题。

两个建议:

  • 更新您的 ruby​​ 版本
  • 更新你的宝石

如果这些不能帮助检查哪个程序已将您的端口与sudo netstat -nlp 绑定

如果这些都没有帮助,请告诉我们更多有关您的设置的信息。

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 2011-12-03
    • 2010-10-31
    • 1970-01-01
    • 2017-04-26
    • 2013-08-05
    • 1970-01-01
    • 2012-11-02
    • 2013-09-06
    相关资源
    最近更新 更多