Skip to content

Instantly share code, notes, and snippets.

@smostovoy
Last active December 13, 2015 17:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save smostovoy/4951748 to your computer and use it in GitHub Desktop.
Save smostovoy/4951748 to your computer and use it in GitHub Desktop.
investigate goliath performance issue
source 'https://rubygems.org'
gem 'goliath', :git =>'https://github.com/postrank-labs/goliath.git'
gem 'em-http-request'
gem 'redis'
gem "hiredis"
gem 'rbtrace'
gem 'rspec'
gem 'typhoeus'
gem 'faraday'
require 'goliath'
require "rbtrace"
require 'em-synchrony'
require 'em-synchrony/em-http'
#require 'redis'
class HelloWorld < Goliath::API
def response(env)
req = EM::HttpRequest.new("http://www.google.com/").get
resp = req.response
#resp = Redis.new(driver: :synchrony, host: "127.0.0.1", port: 6379).ping
[200, {}, resp]
end
end
require 'spec_helper'
require 'faraday'
require 'typhoeus'
require 'typhoeus/adapters/faraday'
describe 'HelloWorld' do
it 'should handle concurrency' do
hydra = Faraday::Adapter::Typhoeus.setup_parallel_manager(:max_concurrency => 50)
conn = Faraday.new(:url => "http://localhost:9000", :parallel_manager => hydra) do |builder|
builder.request :url_encoded
builder.response :logger
builder.adapter :typhoeus
end
conn.in_parallel do
200.times do |i|
conn.get('/', {}).on_complete do |resp|
resp[:status].should == 200
end
end
end
end
@smostovoy
Copy link
Author

rbtrace -p 12345 --methods "HelloWorld#response"

@smostovoy
Copy link
Author

Result:

 HelloWorld#response
   HelloWorld#response
     HelloWorld#response
                                      .....
                                                  HelloWorld#response
                                                    HelloWorld#response
                                                      HelloWorld#response
                                                        HelloWorld#response
                                                          HelloWorld#response <0.004211>
                                                        HelloWorld#response <0.012637>
                                                      HelloWorld#response <0.022030>
                                                    HelloWorld#response <0.031324>
                                                  HelloWorld#response <0.046667>
                                       ....
    HelloWorld#response <2.420847>
  HelloWorld#response <2.431626>
HelloWorld#response <2.444879>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment