2013-08-05 14 views
5

私はPHP/MySQLのREST APIへのリクエストをプロキシnginxの/ノード/ Express3/Socket.io/Redisの/バックボーン/ Backbone.Marionetteアプリを持っています。スタック全体を全体としてロードする必要があります。負荷テストバックボーンのApp

私のアプリは、ノード/ Expressとソケットとのクラスタリングは、マルチコアのRedisを使用して有効である、nginxの静的アセットのキャッシュを利用します。すべてのことを言って、私は試して、それが負荷に耐えることができることを確認するために多くの問題を抱えてきました。

少し重い私はblitz.ioを使用して10秒で50,000ユーザーとそれをヒットし、それも点滅しませんでした...私はそれがクラッシュ見てみたかったので、私を懸念し、どの、または少なくとも息。しかし、50kはあなたがそのツールでそれに投げることができる最大のものであり、あなたが合理的にそれ以上のことをすることができない、あるいはそれを必要としないことを期待していることを私に示している...それは実際には発生していないページが読み込まれた後に負荷が開始され、Backboneアプリケーションが起動してソケット接続を開始し、(別のサーバーからの)正しいREST APIエンドポイントからデータを要求するため、負荷が予想されていました。

だから、ここに私の質問です:

私は、全体として、アプリケーション全体の負荷テストをするにはどうすればよいですか?は、私は同じようにサーバーを課税する負荷テストが必要であることを意味し、クライアント実際意志、:

  1. 要求私のnginxの/ノード/ Expressサーバから単一のページバックボーンアプリ
  2. キックオフ要求のための
  3. REST APIへのリクエストのキックバック(別のサーバで実行されているPHP/MySQL)
  4. NGinxからの静的資産(ブラウザでの動作をシミュレートします)ノード/エクスプレス、Redisを使用してマルチコア・ジャンクを処理)

テストツールは、JSを解析し、それを実行し、ページアップをロードするために、ブラウザのような環境を使用している場合は、すべてがcopaseticになります(nginxの/ノード/ Expressサーバがヒットを取得しますので、PHP/MySQLサーバーがします) 。さもなければ、テストツールは、少なくとも十数種類の要求をほぼ同時に起動することによってこれをシミュレートする必要があります。そうでなければ、それは10,000回見てドアをストレステストするようなものです(つまり、無意味です)。

私は私のアプリはすべて同じページをロードする分の下でそれを打つ1,000人のユーザーを処理できるようにする必要があります。あなたはそれでストレステストを実行することができますApacheのJMeterのhttp://jmeter.apache.org/ を使用することを学ぶ必要があります

+2

まずはおもしろい質問です。今、もし私が尋ねることができたら - あなたは何をテストしていますか?テスト環境は本番環境と同じスペックを持っていますか?単にapacheベンチのようなものでそれをテストしても、あなたはあまり良くありません。私の最善の提案は、複数のユーザーからの実際のクライアントトラフィックをキャプチャし、VMでアプリケーションに中継して、それがもはや処理しなくなるまで行うことです。ボトルネックを見つけるためにそれを行い、それは非常に有用です。 –

+0

eheh ...だから、私には恥ずかしいですが、環境は*テスト環境でもあります。サイトはまだライブではありません(ライブカンファレンスのサポートダッシュボードとして機能する1回限りのアプリです)、1年中3日間しかライブではありません。したがって、3日間のうちに、QA/DEVがプロデュースされ、3日間にプロダクトがプロダクトになります。 – cmcculloh

+0

クライアントアプリケーションを設定することは、サーバーをテストするだけの多くの作業のようです。単一の(手動で実行された)セッションによって生成されたHTTPリクエスト(html、スクリプト、およびcssロードコールを含む)をすべて記録し、そのシーケンスを何千ものパラレルで再生できないのはなぜですか? –

答えて

1

、 あなたは私がそれと同じようにサーバーを課税する負荷テストを必要とする」、言ったように、このチュートリアルhttps://www.youtube.com/watch?v=8NLeq-QxkSw

を見ますクライアントは実際には "

です。つまり、使用しているテクノロジには無関係です。

私は非常に広く使用されている、あなたはジェンキンスと統合し、それをクールなものの多くを行うことができ、JMeterのをお勧めします。