2

Rails 3.0.5 を実行しており、コンソールに 60 ミリ秒かかると報告されたページが表示されますが、Firefox のネット ロード タイム チャートを確認すると、2.9 秒かかります。abBash でコマンドを実行すると、300 ミリ秒かかると表示されます。

したがって、スタンドの JavaScript (6 つ) を削除すると、1.9 秒かかります... しかし、なぜそんなに遅いのだろうか? キープアライブは尊重されませんか?

また、Firefox が 4 つのファイルを同時にダウンロードしていることを示しているのも奇妙です。Webrick は一度に 1 つの接続しかサポートしていないと思いましたか?

(mongrel または "thin" を使用するように変更すると、状況が変わったり、より良くなったりしますか?)

また奇妙なのは、もし私が

ab -n 10 -c 5 http://www.somesite.com:8080

3 秒かかります。どのようkeep-aliveにサポートされているかをテストするために、次の-kオプションを使用しました。

ab -n 10 -c 5 -k http://www.somesite.com:8080

合計時間が 3 秒から 4.5 秒に変わりました。keep-alive高速化することは想定されていませんがkeep-alive、Webrick でサポートされていますか?

また、同時接続をサポートしている場合、一部のコードがクラス変数を使用して物事を処理すると、競合状態が発生することはありませんか? (クラス変数のコンテンツはリクエスト間で保持されるため)

4

2 に答える 2

5

これはあなたの質問に正確に答えるものではありませんが、おそらくあなたの質問を無関係にするアドバイスをします.

Webrick は本番環境では使用しないでください。これは純粋な ruby​​ で書かれており、一度に 1 つの要求しか処理できません。開発モード以外で使用するようには作られていません。

本番環境では、nginx のようなリバース プロキシの背後でシンの複数のインスタンスを使用するか、これを行うパッセンジャーを使用できます (そして、ほとんどの人が現代で使用しているものです)。


質問に部分的に答えるには:

abFirefox よりも高速に実行される理由は、css および javascript ファイルの要求がブラウザーの機能であるためです。abサーバーからの応答時間のベンチマークのみを行っており、画像、css、または js の送信は含まれていません。

Rails ベンチマークが 60 ミリ秒しかない理由は、Rails スタックにあった時間のみを測定するためです。リクエストをユーザーに送り返すのにかかる時間はカウントされません。

Webrick は実動用に作成されていないため、キープアライブがサポートされていなくても驚かないでしょう。

于 2011-03-24T17:00:06.563 に答える
0

同じアプリを 2 つの環境でローカルに実行する場合は、次のように、databases.yml に別のエントリを作成します。

dev2: アダプター: mysql2 データベース: db ユーザー名: 名前 パスワード: wpord! ホスト: mysql.myexample.com プール: 5 タイムアウト: 5000

そして実行しますrails server -e dev2 --port 3001

それは私にとってはうまくいきます。つまり、ローカルで実行されている同じアプリが、ローカルおよびリモートのデータベースに接続します。

于 2011-07-14T22:51:07.377 に答える