20120621
最近クックパッドでは、アプリケーションサーバの大半が Rails 2.3 から Rails 3 に置き換わったのですが*1、リリース前のベンチマークの時点ではあまりパフォーマンスが出ず四苦八苦していました。具体的には Rails 2.3 の時と比べ MRI 1.8.7 だとレスポンスタムが200%ぐらい遅い結果でした。Rails 3 になって実装が Merb core を取り入れ疎結合で綺麗になった反面、より多くのオブジェクトと・メモリを利用する様になった影響かと思います。 そこで Ruby インタプリタの変更*2を行い検証をしたところ MRI 1.8.7 (Rails 2.3と比べ) 約200%遅い MRI 1.8.7 -> Ruby Enterprise Edition 1.8.7 2011.03 (tcmalloc 無効) 約180%低速 MRI 1.8.7 -> Ruby Ente
最近は仕事でSinatraアプリを書いたりしているので、Sinatraアプリを動かすためにはどのHTTPサーバを使うのがベストなのかが気になっている。(先に結論を書いておくけれど、どれがベスト、という唯一の選択肢は今のところありません。適材適所です。) SinatraはRackの上に構築されているので、Rackに対応したHTTPサーバーを使って動かす事になるのだが、この数がやたらと多く、どれを使えばいいのか迷う。代表的なものを挙げただけでも、WebRick, Mongrel, Thin, Unicorn, Passenger(Apacheとかに組み込んで使うやつ), FastCGI, (普通の)CGI、これぐらいは選択肢がある(いくつかHTTPサーバじゃない物も混ざっているが、Rackが対応してるという点は共通している)。 WebRickはそもそもパフォーマンスに重点を置いていないし、Mo
Account Suspended This Account has been suspended. Contact your hosting provider for more information.
2010.07.09 次世代Ruby on RailsサーバーUnicorn(汎用のRackアプリケーションサーバ)を使ってみた 2010.07.20追記: prefixを指定した運用も可能でした。ご指摘頂きありがとうございます。 2010.07.28追記: 関連記事「RailsサーバUnicornを飼いならす! 運用時の便利技」へのリンクを張りました。 Railsサーバはたくさんあってややこしいですね! 最近さらにUnicornというものが頭角を表してきたようで、Twitterやgithubも使っているようなので使ってみましたので、特徴や使い方などレポートしてみたいと思います。 このブログの他にもEngine Yardのブログ記事「Everything You Need to Know About Unicorn」やgithubの記事「Unicorn!」が非常に参考になると思いますので、
Ruby on Rails Gregg Pollack氏が3 Weeks in Rails (October 29, 2008)において次期メジャーリリースになるRuby on Rails 2.2.1についてまとめている。まずバージョン番号については説明が必要だろう。24日(米国時間)にRails 2.2 RC1が公開された。準備リリースという位置づけだがバージョン番号は2.2.0となった。このため順調に進めば次の2.2.1が正式な2.2になる。 Rails 2.2はRailsにとって注目すべきリリースになる。2.2で登場する新機能はRuby on Rails 2.2 Release Notesにまとまっているので興味がある場合はチェックしてほしい。概要でよければ3 Weeks in Rails (October 29, 2008)に大体の内容がまとまっている。 2.2の最大の特徴はスレッ
朝会(デイリー・スタンドアップ・ミーティング、デイリー・スクラム、デイリー・ハドル*1、朝のロールコール*2)を説明するのは簡単だ。チーム全員が毎日顔を合わせ、現在の状況を迅速に確認しあう。立ってやるのはミーティングの時間を短くするためだ。以上。 でもこれだけじゃあ、「良い朝会」と「悪い朝会」の微妙な違いは分からないだろう。 朝会の定義は非常に簡単なものなのに、 うまくいっていない朝会があって私はとても驚いた。 すぐに原因は分かったが、そのチームはそれが何なのか分かっていなかった。 朝会の基本原則と詳細を意識していなかったのだ。 そのために朝会の問題について診断や解決がなされていなかったわけだ。 良い朝会を経験した人たちは、 うまくいってないときに何をすればいいかを知っている。 朝会に慣れていない人たちは、 うまくいってないときに何をすればいいかに気づかない。 「暗黙知なんだから、とにかく
書式 #include <sys/types.h> #include <sys/time.h> #include <sys/resource.h> #define RUSAGE_SELF 0 #define RUSAGE_CHILDREN -1 int getrusage(int who, struct rusage *rusage); 解説 getrusage() は、現在のプロセス、またはそのプロセスが生成して、終了済みで あるすべての子プロセスが使用したリソースを詳しく説明する情報を返します。 who パラメータは RUSAGE_SELF または RUSAGE_CHILDREN のどちらかです。 rusage が指すバッファには次の構造体が入れられます。 struct rusage { struct timeval ru_utime; /* 使用されたユーザ時間 */ struct
しかしこれは,ごく表面的な一つの側面を表現しているに過ぎない。UPと言えば「反復型開発」を思い浮かべる読者も多いだろう。しかし,「反復型開発」もUPのすべてではない。さらに,今では一般的となっている「オブジェクト指向」と「UML」が,その歴史の多くをUPとともに歩んできたという事実をご存じだろうか。 UPは,ウォーターフォール型開発プロセスに代表される「旧世代の開発手法」の弱点を克服するために,次の思想とともに生み出された。 ユーザーの求める真の要求を満足させること 要求や環境の変化に対応できること ソフトウエア開発のリスクを減少させること 再利用可能なコンポーネントベースのシステムを実現すること そしてソフトウエア業界に「品質の高いソフトウエアを効率的に開発するためのガイドラインを提供すること」を最終的な目的としている(図2)。 様々な人達が,「なぜ失敗するのか」「どうすれば同じ間違いを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く