CMS「1C-Bitrix」の負荷テスト

バヌ、プヌル、レストランのある飛行機に぀いおの冗談を知っおいたすか。客宀乗務員を離陞するずきだけ「そしお今、これですべお離陞しようずしたす」ず蚀いたすか



Web開発は、そのような飛行機に少し䌌おいたす。 顧客は、Webスタゞオにクヌルなデザむン、倚数のむンタラクティブ機胜、およびオンラむンストアぞのすべおの配信および支払いサヌビスを望んでいたす。スタゞオはこれをすべお喜んでプログラムしたす。しかし、サヌバヌがサむトの安定した運甚を保蚌する十分なパワヌを備えおいるかどうかは䞍明です

負荷を予枬可胜にするために、いく぀かの参照倀を蚭定するために、「1C-BitrixSite Management」および「1C-BitrixEnterprise」の負荷テストを実行したした。



クラむアントが珟圚の機噚で䜕が埗られるかを理解し、開発者がプロ​​ゞェクトの成長の芋通しを理解できるように、テストを実斜しようずしたした。 負荷の増加に応じお拡匵できたすか



この蚘事では、テストをどのように組織化および実斜したか、そしお自分自身に察しおどのような結論を出したかに぀いお説明したす。



䜕に圹立ちたすか 参照番号により、珟圚のサむトず朜圚的な新しいホスティングを比范し、新しい機胜の導入がシステムに䞎える圱響を明確に評䟡できたす。 はい、システムの技術的な制限を理解しおください。



テストの構成、テストプロセス䞭に発生した特定の問題、およびテスト結果から導き出せる結論に焊点を圓おたした。 最も関心のある方のために、詳现な技術レポヌトぞのリンクがありたす。



問題の声明



倚くの人がストレステストの意味、目的、目的を異なっお理解しおいたす。



そもそも、自分で凊方する必芁がありたす-䜕が欲しいのでしょうか



テストする補品ず圢匏

たず、実際のオンラむンストア、そのコヌド、およびデヌタベヌスを取埗したいず考えたした。 しかし、これはこの特定の゜リュヌションをテストするものであり、他の開発者はそれを参照ポむントずしお䜿甚するこずはできたせん。 そのため、暙準の「ボックス」をテストし、倧芏暡なオンラむンストアに察応する倚数のポゞションで満たす必芁がありたす私たちの経隓では、これは玄100,000 SKUです。 「1C-Bitrix」は、付属の「Composite Cache」テクノロゞヌず連携したした。これは、保存されたペヌゞの高速キャッシュをnginxから最初にロヌドし、次にajaxリク゚ストで動的デヌタをロヌドする゜リュヌションです。 したがっお、ナヌザヌはできるだけ早くペヌゞを受け取りたす。 1秒あたりのク゚リ数を掚定するために、動的ク゚リを怜蚎したした。



サヌバヌアヌキテクチャはどうあるべきですか

必ず単䞀サヌバヌ構成をテストしおください。これは最も単玔で最も䞀般的な構成です。 しかし、2台目のサヌバヌを远加するずパフォヌマンスがどれだけ向䞊するかを理解するこずも興味深いですか 二重になりたすか 4台のマシンのクラスタヌを䜿甚するずどうなりたすか 新しいサヌバヌず新しいサヌバヌをクラスタヌに远加しお、氎平方向に正垞にスケヌリングするこずは可胜ですか



したがっお、2台ず4台の1台のサヌバヌから構成をテストするこずにしたした。



どの負荷シナリオを䜜成する必芁がありたすか

倚数の倧芏暡店舗の負荷の分析によるず、オンラむンストアのトラフィックは3぀のカテゎリに分類できたす。



  1. ナヌザヌの60は、カタログ内の耇数のペヌゞを蚪れお、必芁な特定の補品を把握しおいたす。
  2. 37のナヌザヌが、いく぀かの可胜な補品から目的の補品を遞択し、フィルタリングスマヌトフィルタヌを適甚したす。
  3. ナヌザヌの3良奜なコンバヌゞョンの暙準的な指暙は、補品をバスケットに入れお賌入したした。


サヌバヌのロヌド方法

プロゞェクトの負荷テストには、クロヌズドずオヌプンの2぀の䞻なモデルがありたす。 Closedは、「ナヌザヌ」のリク゚ストが静的なストリヌムで送信される人工的な䞀定の静的負荷を意味したす実際のように、波ではありたせん。 その目的は、最倧負荷でのプロゞェクトの動䜜を調べお、システムの最倧「スルヌプット」を理解するこずです。 これは指暙の䞊郚のバヌであり、それを超えるこずはできたせん。



オヌプンモデルには、実生掻に近いテストが含たれたす。ナヌザヌは、システムが耐えるこずができないほどの波にさらされたす。 これは、システムの限界、重芁な条件での動䜜方法を芋぀けるのに圹立ちたす。



このテストの目暙はシステムのスルヌプットを芋぀けるこずでした。そのため、SLAが耐えられる最倧負荷で閉じたモデルを遞択したした。



テストに遞択するSLAはどれですか

システムが安定しおリク゚ストを凊理しおいるず刀断するしきい倀を明確に識別する必芁がありたした。 これを行うために、 倧芏暡オンラむンストアのTOP-100統蚈2014幎のKommersantのバヌゞョンによるを䜿甚し、2぀の䞻芁なメトリックを遞択したした芁求の99ぞの応答は1秒未満で䞎えられるべきであり、コヌドでの応答の数、 HTTP 200ずは異なり、0.5以䞋にする必芁がありたす。 テストは24時間継続しお実斜する必芁がありたす。



どのホスティングを遞択したすか

テスト甚のサむトずしお、サンクトペテルブルクのTsvetochnnaya-1デヌタセンタヌでホストするSelectelを遞択したした。 Selectelは、最も䞀般的な構成のサヌバヌを提䟛したした-Intel Xeon E3-1270v3 3.5 GHz、32 GBのRAM、RAID 1の2×240 GB SSDドラむブ。1台のサヌバヌは、異なる構成でロヌドセンタヌずしお䜿甚されたした。 1C-Bitrix」、テストに䜿甚したした。



システム構成

テストの䞀環ずしお、サヌバヌはLinux CentOS 6.6で動䜜し、1C-BitrixWeb Environmentパッケヌゞがむンストヌルされおいたす 。詳现に぀いおは、 こちらをご芧ください 。



システム䞊のPHPはバヌゞョン5.6.9に曎新され、キャッシュディレクトリはtmpfsにマりントされたした。 テスト甚に3぀の構成が準備されたした。



11台のサヌバヌ。 「1C-BitrixSite Management」、WebおよびMySQLは同じサヌバヌで動䜜したす







22台のサヌバヌ。 「1C-BitrixEnterprise」、最初のサヌバヌのnginxバランサヌ、䞡方のサヌバヌのWebアプリケヌション、MySQLマスタヌずその曞き蟌み/読み取り-最初のサヌバヌ、MySQLスレヌブず読み取り-2番目のサヌバヌ







34台のサヌバヌ。 2番目の構成がスレヌブマシンによっお氎平方向にスケヌリングされるバリアント。



テスト方法

テストツヌルずしおYandex.Tankが遞択されたした。 Yandex.Tankでは、PhantomずJMeterの2぀の負荷生成システムを䜿甚できたす。 Phantomは、パフォヌマンスの点ではJMeterより優れおいたすが、POSTロゞックの生成、Cookieの保存およびその埌の䜿甚は蚱可したせん。 このため、JMeterを䜿甚しお負荷を生成したした。



誰がテストしおいたすか

私たちは、独立した䌁業がテストを実斜するこずを望んでいたした。その意芋は、私たちずサヌドパヌティ䌁業、および業界の専門家の䞡方から信頌されおいたす。 このタスクをITSummaに委ねたした。ITSummaは、2008幎からRunetの有名なプロゞェクトの24時間䜓制の管理ず技術サポヌトを行い、垂堎で定着しおいたす。 その埓業員は、専門䌚議Highload、RIT ++などの定期的な講挔者です。



テスト䞭



振り返っおみるず、テストは3぀の段階に分けるこずができたす。



最初の段階はフィッティングシュヌティングで、SLAが保存されるスレッドの最倧数を遞択したす。





2番目の段階 -最初の段階では、完党なテストを実行しようずしたす。 ストレステストを蚈画するずきは、テストを実行するシステムの最終決定ずテスト手順自䜓の改良の䞡方に時間がかかるこずを理解する必芁がありたす。



この段階で、倚くの困難に盎面したした。 それらを克服した経隓から、倚くの教蚓を孊びたした。



  1. ストレステストを実斜する堎合、最初の倧芏暡なテストは理想的な結果からはほど遠いこずを忘れないでください。 おそらく、OSずサヌバヌ゜フトりェアの構成にある䜕かを忘れるでしょう。 テストシステム自䜓に問題がある可胜性がありたすJMeterはJavaアプリケヌションであり、 ガベヌゞコレクションに固有の問題がありたす 。 たあ、そしお最も重芁なこず-あなたはあなたのシステムにあなたが以前に気付かなかった、そしお修正するこずができる薄いスポットを芋るでしょう。 たずえば、テストの䞀環ずしお、9぀の重倧なバグが発芋されたした。これらの修正は、補品の次のバヌゞョンでリリヌスされる予定です。 したがっお、最適化ガむドずしお最初のテストを怜蚎しおください。
  2. やや明らかなこずですが、これは蚀う䟡倀がありたす最適化䞭に、サヌバヌ䞊のすべおの構成倉曎をコミットする必芁がありたす。 理想的には、䞀床に数個以䞊の倉曎を適甚しないでください。 そうしないず、どのアクションがパフォヌマンスの向䞊に぀ながったかを正確に把握するこずが困難になりたす。
  3. すぐに怜出されない゚ラヌが存圚する堎合の毎日のテストは、仕事の損倱です。 繰り返しの1぀の埌、構成に倚くの倉曎を加えたずき、良い結果が埗られ、満足しおいたした。 しかし、その埌、圌らは3番目のシナリオがオフになっおいるこずを発芋したした。これは、私たちの堎合で最も難しいナヌザヌの泚文です。 私は再びテストを始めなければなりたせんでした。 1日埌、適甚された倉曎がシステムを高速化しないこずがわかりたした。
  4. ストレステストの察象ずなるシステムは実皌働システムであり、実皌働サむトで発生する䞀般的な問題はすべお同じこずが起こり埗たす。 テストの1぀では、起動から12時間埌に、いずれかのサヌバヌのスペヌスが䞍足したした。 したがっお、問題が電話に届くように、䜿い慣れた監芖システムのサむトで問題に関する暙準のアラヌトを出すこずが重芁です。 そしお、受け取り次第、すぐに実行しお、すでに収集された貎重なデヌタを倱わないように状況を修正する必芁がありたす。
  5. 良い結果は、倚くの堎合、テスト゚ラヌを意味したす。 反埩の1぀では、前のテストず比范しお2倍の増加がありたした。 MySQLは最倧接続を超えるず「クラッシュ」し、そのような状況のサむトはテストシステムに有効なHTTP 200コヌドで応答するこずが刀明したした。
  6. どのテストでも、「官僚䞻矩」は非垞に重芁です。スクリプト、システム構成、テストログなど、テストのできるだけ詳现な説明を䜜成しおください。 これらはすべお、その埌の分析に圹立ちたす。


3番目の段階はテスト自䜓です。 すべおの手順が完了し、システムが最適化されたら、テストを数回実行するこずをお勧めしたす。 私たちの経隓では、これにより真に正確な結果を埗るこずができ、24時間のテストでも同じテストずほずんど同じになりたす。 テストを繰り返しお、1秒あたりのク゚リに察しお正確な結果を埗たした。



詊隓結果



構成11サヌバヌ、「1C-BitrixSite Management」、「Business」゚ディション



テスト実行時間86 892秒







パヌセンタむルダンデックスタンク





RPS「シェルフ」䞊限-毎秒350リク゚スト、「合成」リク゚ストを含む-毎秒167動的リク゚スト。



これは、耇雑なシステムにずっおは良い結果ですが、バスケットずそのデザむンに商品を远加するための耇雑な手順によっお䞻な負担が生じるこずに泚意するこずが重芁です。



構成22台のサヌバヌ、「1C-BitrixEnterprise」









パヌセンタむルダンデックスタンク





「シェルフ」RPS「耇合」リク゚ストを含む-侊限-毎秒550リク゚スト。



1秒あたりのリク゚スト数は、期埅したほど増加したせんでした-1.6倍。 マルチサヌバヌ構成では、サヌバヌ間盞互䜜甚ずデヌタ亀換のオヌバヌヘッドが远加されるこずに泚意しおください。



構成34台のサヌバヌ、「1C-BitrixEnterprise」









パヌセンタむルダンデックスタンク





RPS「シェルフ」「耇合」リク゚ストを含む-侊限-1秒あたり1100リク゚スト。



そしお、ここで-スケヌリングで優れた結果。 2サヌバヌ構成にさらに2぀のサヌバヌを远加するず、生産性が2倍に向䞊したした。 この結果は、「鉄」の垂盎制限に達しないこずを瀺唆し、远加のサヌバヌがマシン間で負荷を適切に分散したす。



結果ず今埌の蚈画



このテストでは、開発者がシステムのパフォヌマンスを評䟡するずきに集䞭できる暙準を蚭定しようずしたした。 私たちにずっお非垞に重芁な結果は、氎平スケヌリング「1C-Bitrix」の高効率の確認でした。2台ではなく4台のサヌバヌを䜿甚し、2倍の増加をもたらしたした。 そしおもちろん、1぀のサヌバヌ䞊の耇雑なシステムでのダむナミクスに察する167ク゚リが優れたメトリックです。



次のポむントを自分で確認するために、オヌプンシステムでテストを実斜する予定です。



  1. 単䞀のサヌバヌ内で制限に達した埌、システムはどうなりたすか
  2. システムは超高負荷からどのくらいの速さで回埩したすか
  3. 開発者が珟圚の機噚で䜜成したプロゞェクトを提䟛できる実際のナヌザヌ数を掚定できるように、このようなツヌルキットを入手する方法は


このテストの結果ず私たちが孊んだ経隓に぀いおお話ししたす。



䟿利なリンク

  1. 1C-Bitrixの負荷テストに関する詳现レポヌト
  2. Yandex.TankのAlexey LavrenyukによるFailOver Conference 2015のレポヌト
  3. JMeterのチュヌニング



All Articles