
この春、私たちの
チームは
CMS 1C-Bitrixのいくつかのバージョンの負荷テストと最適化の注文を受けました。 すばらしい仕事ですが、どうすればいいですか? この記事では、正しくテストする方法と、「
ストレステスト 」とはどういう意味ですか? そして、以下で-Bitrixのテスト方法と実行内容。
目標
ストレステストの目的はサイトをあふれさせることだけではないため、そのような結果はプロジェクトの開発に何も提供しません。 私たちのタスクは、負荷がかかった状態でのシステムの動作、ボトルネックはどこにあるのか、それらを認識する方法を理解することです。
叙情的な余談 。 数年前のRambler-Photoプロジェクトでは、ストレステストが実施されています。 システム管理者は、システムの動作を慎重に研究します。 結果は奇妙です-ほとんどの場合、システムはシステムモードで過ごします(これは単純なtopユーティリティで確認できます)。 これは、プロジェクトコードを実行する代わりに、オペレーティングシステムが動作し、コンテキストの切り替えとシステムコールの作成に時間を費やすことを意味します。
(プログラマーと共同で)分析の結果によると、HTML :: Mason(Rambler-Photoプロジェクトで使用されるテンプレートエンジン)は、各リクエストで「デフォルトで」さまざまなファイルの存在を数十回チェックすることがわかりました。 HTML :: Masonの設定の1つのディレクティブが問題を解決しました。どう使う?

この恐ろしいスキームは、単純なCGIスクリプトでも、多くのコンポーネント、多くのインターフェース、サブシステムが関係していることを示すために与えられています。 ここから、最も重要な結論に従います。
負荷は合計でシステムに与えられます!
少し考えた後、エディターとユーザーのさまざまなアクションをシミュレートしながら、ロードされたシステムをテストするのに長い時間がかかることを理解します。 たとえば、新しい記事をダウンロードすると、キャッシュのフラッシュが発生し、実行される操作の数が急激に増加する可能性があります(キャッシュを埋める必要があります!)。 したがって:
長時間負荷がかかる
ユーザーストリームはどのように見えますか? 答えは簡単です-実際の条件にできるだけ近い。 最良のオプションは、実際のサイトを1C-Bitrixおよび実際のログファイルに移動し、それらを分析した後、コンパイルすることです。
負荷プロファイル
ユーザーは別のページに移動するだけでなく、別のページに移動します。 大規模なプロジェクトの問題は、モデムを使用しているユーザーです。)想像してみてください-このような遅いユーザーはページを要求し、重いmod_phpサーバーに接続します。 また、ユーザーは、たとえば1キロバイト/秒の速度で、このページをゆっくりと拾い始めます。 したがって、ページサイズが100キロバイトの場合、PHPサーバーは100秒間、ほぼ2分間ビジー状態になります。
明らかに、これらのユーザーのうち20人は(たとえば)利用可能なすべてのApacheの子を取得でき、応答しなくなります。 従来の状況では、マシンはロードされていませんが、Webサーバーは応答していません。

これらの目的のために、同時に何千ものリクエストを処理できる軽量のフロントエンドが重いバックエンドの前に置かれます。
したがって、一部のユーザーがサーバーの高速作業の結果をゆっくりと拾い上げるという事実を考慮してテストする必要があります。
負荷システムは、遅いユーザーをシミュレートする必要があります
さて、今日の最後のルール-この記事の冒頭で挙げた例を思い出してください。
誰もがロードされたシステムを見ています:テスター、管理者、開発者!
次回は、劣化曲線とは何か、結果をどのように解釈するか、1C-Bitrixが私たちを驚かせたことの結果として得られるものについて話します。