タグ

rackに関するkarur4nのブックマーク (4)

  • Rack を読む / WEBrick が起動するまで - Qiita

    最近、社内で Rails 関係のコードを読む会を持ち回りでやっていて、今週は僕が担当だったのだけど、Rack をもうちょっとちゃんと知りたかったので、Rack 対応の軽量サーバーである WEBrick を読んだ。pryで実行しながら読んだのだけど、流れを整理しておく。 TL; DR 具体的には、公式サイトのトップページに書かれた以下がどのように立ち上がりリクエストを処理するかを追った。 require 'rack' app = Proc.new do |env| ['200', {'Content-Type' => 'text/html'}, ['A barebones rack app.']] end Rack::Handler::WEBrick.run app

    Rack を読む / WEBrick が起動するまで - Qiita
    karur4n
    karur4n 2015/12/21
  • Rack applicationのプロファイリングにはrack-lineprofが便利 - k0kubun's blog

    RubyKaigi 2014行った。良い発表がいろいろ聞けたんだけど、最近ISUCONに向けてwebアプリのチューニングに興味があったので特にfinal keynoteが興味深かった。 その中で紹介されていたtmm1/rblineprofが行ごとの実行時間を表示してくれるのでとても便利そうだったんだけど、GitHubではpeek/peek-rblineprofというRails用のプラグインでrblineprofを活用しているので、ISUCONでおそらく使用されるであろうsinatraでどうやって使うか考えていた。 kainosnoema/rack-lineprofというgemがその用途に便利そうだったので紹介したい。 使い方 rack-lineprofはRack middlewareで、まず以下のようにuseする必要がある。 require 'rack-lineprof' class My

    Rack applicationのプロファイリングにはrack-lineprofが便利 - k0kubun's blog
  • Rackのuseとrunを紐解く - ほげほげ日記

    require "rack" # rack middleware class HogeMidWare def initialize(app) puts "init hoge" @app = app end def call(env) puts "hoge" @app.call(env) end end # rack middleware class FooMidWare def initialize(app) puts "init foo" @app = app end def call(env) puts "foo" @app.call(env) end end # rack application class HomApp def call(env) puts "hom" [200, {"Content-Type" => "text/plain"}, ["hom"]] end end

    Rackのuseとrunを紐解く - ほげほげ日記
  • 最近の Rack サーバ事情について - おもしろwebサービス開発日記

    先月、heroku推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い回線のクライアントです。3G環境のモバイル端末などが該当します。 「unicorn だとスロークライアントの影響を受けやすい」とは unicorn はプロセスモデルのサーバであり、blocking I/O モデルを採用しています。つまり、クライアントとの通信中プロセスが専有されるということです。 例えば unicorn がワーカプロセスを3つ立ち上げていて、そこへ通信完了に10分かかるようなスロークライアントが3つ接続されたら…、続くクライアントはスロークライアントの通信が完了するまで実行を待たなければならなくなります。プ

    最近の Rack サーバ事情について - おもしろwebサービス開発日記
  • 1