パフォーマンスチューニング01

ラインは、任意のパフォーマンスの問題されていない、後に、私は友人を持って、彼はかつてうん、なぜ多くのシステムが持っているか、彼らは、同社のシステム・パフォーマンスのチューニングを通過することはありません、ライン上の完全な機能テストを私に言いましたパフォーマンスチューニング、それ?

その時私は、あなたの会社が12306でない場合は、それを上のオンラインシステムのパフォーマンスの最適化をしない、彼に1に答える何が起こるかをしようとします。

あなたの場合は、どのようにそれに答えるでしょうか?なぜ我々はパフォーマンスチューニングを行う必要があります:今日、我々はあなたがこれらの質問を見つけることができるように望んでいた、このトピックについておしゃべり?あなたはやって始めたのはいつですか?パフォーマンスチューニングは、標準では、参照することができていないのですか?

なぜパフォーマンスチューニングを行いますか?

あなたがオンライン製品パフォーマンステストを通過しなかった場合、それは時限爆弾のようなものです、あなたは、問題が発生した制限は、それが負担することができる場所、あなたが知らない何時間かわかりません。

いくつかのパフォーマンスの問題、ゆっくりと自然に分解し、ある時点で、生産を蓄積するための時間であり、より多くのパフォーマンスの問題は、たとえばによる交通の変動、ユーザアクティビティ、または同社の製品によって引き起こされる上昇した。もちろんがあるかもしれませんそれは時限爆弾を引き起こさなかったので、半死後の製品ラインは、多くのトラフィックされていません。

今イベント、プロダクトマネージャーを行うには、あなたのシステムを想定や上司は、あなたが何百も訪問し、システムがイベントの圧力に耐えることができるかどうか尋ねた何千人ものユーザーの期待を伝えます。あなたは自分の状況にシステムのパフォーマンスがわからない場合にのみ恐る恐る上司に答え、それについて問題がない場合もあります。

だから、どちらかのパフォーマンスチューニングを行い、この質問は実際には非常に良い答えです。開発が完了した後、すべてのシステムは、多かれ少なかれ、パフォーマンス上の問題があるでしょう、私たち最初に行う必要がなどストレステスト、可能な動作シナリオのシミュレーション、などの問題を、公開する方法を見つけることであると、パフォーマンス・チューニングを通じて、これらを解決するために問題。

たとえば、10秒以上待つのApp、必要性と情報のクエリ特定の一片とき、活動を購入するには、イベントページを入力して、というようにすることはできません。あなたは、システムの応答が最も直接的である参照要因のパフォーマンスを反映して、ご覧ください。

問題は、オンラインシステム上に表示されていないことを回答した場合、我々はパフォーマンスチューニングを行いませんされていませんか?物語を伝えるためにあなたを与えます。

システム開発部門は大きな神に来る前に、彼は年に会社に来たので、私の古巣たら、なぜ偉大な神は彼を呼び出し、彼は一つだけを持っていた、元の半分にサーバーの数を減らすことです、システムのパフォーマンスだけでなく、改善されます。

だけでなく、優れたシステム性能のチューニングでは、システムのパフォーマンスを向上させることができますが、また、同社は、リソースを節約するために。これは、我々はパフォーマンスチューニングの最も直接的な目的は何です。

するときは、介入チューニングを始めたのですか?

なぜ問題を解決するために、パフォーマンスの最適化を行い、その後、新たな問題が発生する:あなたは、パフォーマンスの監視と最適化の包括的なシステムを実行する必要がある場合は、私達はそれをチューニングする際に介入し始めますか?早いほど良いが介入していませんか?

それは私たちがパフォーマンスを最適化するために苦労与えるので実際には、プロジェクト開発の初期段階で、我々はあまりにも、パフォーマンスの最適化を心配する必要がなく、システムのパフォーマンスを向上するだけでなく、開発の進捗に影響を与え、さらには逆の効果を得ることはありませんだけではなく、与えますシステムは新たな問題をもたらします。

私達はちょうど、例えば、コードレベルでのコードの有効保証するディスクI / O操作を減らす、ロック競合と効率的なアルゴリズムの使用などを削減する必要があります。より複雑なビジネスに遭遇、我々は完全にデザインパターンのビジネスを最適化するために、コードを使用することができます。例えば、商品価格のデザインは、彼らは多くの場合、割引の多くを持って、赤い封筒の活動は、私たちはこのビジネスを設計するために装飾的なパターンを使用することができます。

コーディングシステムの完成後、我々はシステムのパフォーマンスをテストすることができます。この時点で、製品ラインマネージャは、一般的に、我々は、パフォーマンス分析を介して、統計的パフォーマンス指標の統計的ツールが予想範囲内かどうかを確認するために提供するリファレンス・プラットフォームでの圧力を測定し、期待されるデータを提供します。

オンラインのプロジェクトの成功の後、我々はまた、ログは、問題が検出されると、システムのパフォーマンスの問題を観察するために、監視およびログパフォーマンス統計によれば、ログを分析し、迅速に問題を解決する必要があり、ラインの実際の状況を必要としています。

どのような参照要素は、システムのパフォーマンスを反映することができますか?

我々は最終的に繰り返し性能メトリックについて話しました、それがどのように参加している研究開発プロジェクト、パフォーマンス指標の様々な段階でのパフォーマンスチューニングについて語った上で、何をしますか?

我々はパフォーマンスメトリックを理解する前に、我々は、システム内のコンピュータリソースがパフォーマンスのボトルネックになるかを理解するために開始します。

CPU:一部のアプリケーションでは、コンピューティングの多くを必要とし、彼らは、CPUリソースまで長い、途切れのないテイクになり、他のリソースにつながることはCPUを競うことができないと、システムのパフォーマンスの問題につながる、反応が遅いです。例えば、正規表現に起因する無限ループコード後戻り再帰は、JVMは、フルGC、ならびにコンテキストの多数CPUリソースが使用中である引き起こす可能性が高いマルチスレッドプログラミングなどによって引き起こされるスイッチ頻繁。

メモリ:Javaのプログラムは、一般的にJVMによってメモリ管理に割り当てられている、それは主にJavaで作成されたストアオブジェクトにJVMのヒープメモリに使用されています。システムのヒープメモリの読み出しと書き込み速度は、基本的な読み取りと書き込みパフォーマンスのボトルネックが存在しない場合ので、非常に高速です。しかし、ディスクよりもメモリの高コストのために、ディスク、メモリ、ストレージ容量に比べて非常に限られています。メモリ空間が完全に占有されたときに、オブジェクトが回復することはできませんので、それはメモリオーバーフロー、メモリリークやその他の問題につながります。

ディスクI / O:ディスクメモリに比べては、収納スペースがはるかに大きいですが、ディスクI / Oの読み取りと書き込み速度も遅いメモリよりも、SSDソリッドステートドライブの導入が最適化されているが、まだないのメモリを搭載しました並みの速度を読み取りおよび書き込み。

ネットワーク:ネットワークシステムパフォーマンス、それはまた、重要な役割を果たしています。あなたはクラウドサービスを購入した場合は、ネットワーク帯域幅のリンクのサイズを選択しなければならなかったしなければなりません。帯域幅は、送信データが比較的大きい、または並行システムよりも大きい場合、ネットワークは簡単にパフォーマンスのボトルネックになることができ、低すぎます。

異常:Javaアプリケーション、スローされた例外のスタック、異常なキャプチャおよび処理を構築する必要性が、このプロセスは非常にシステムのパフォーマンスを消費しています。あなたが継続的に高い同時実行、例外処理の場合に例外をスローした場合、システムのパフォーマンスが大幅に影響を受けることになります。

データベース:ほとんどのデータベース・システムが使用され、データベースの操作は、多くの場合、読み取りと書き込みのディスクI / Oのために関連しています。データベースの読み取りおよび書き込み操作の多くは、遅延データベース操作につながる、ディスクI / Oパフォーマンスのボトルネックが発生します。データベースシステムの読み取りおよび書き込み操作の数が多いため、データベースのパフォーマンスは、システムの最適化の中核です。

ロックの競争:並行プログラミングでは、私たちはしばしば、複数のスレッドを必要とし、読み取りと書き込みの操作が確実にするためにあるデータの最小単位を(、維持するために、この時間を同じリソースを共有する別のスレッドで、この共有リソーススレッドの書き込みではなく、変更)、私たちは、ロックを使用します。使用ロックは、システムにパフォーマンスのオーバーヘッドにつながる、コンテキストスイッチをもたらす可能性があります。JDK1.6後、内部JVMロック最適化の切り替えに起因するロック競合を低減するためのJavaコンテキストは、ロックを除去する、ロックバイアス、スピン・ロック、軽量ロック、ロック粗大化を追加して、例えば、何度も行われてきましたように。そして、リソースのロックを最適化し、オペレーティング・システムのより多くの知識を学ぶためにどのように合理的なロック・リソースの使用を必要とする、Javaのマルチスレッドプログラミング関連の問題に対処するために、実際のシーンと組み合わせ蓄積プロジェクト経験に基づきます。

上記のこれらの基本的な内容を理解し、我々は一般的にシステムのパフォーマンスを測定するために、以下のいくつかの指標を得ることができます。

応答時間

応答時間は、システムのパフォーマンスを測定するための重要な指標である、応答時間が短く、パフォーマンスが向上、インターフェースの一般的な応答時間はミリ秒単位です。システムでは、ボトムアップの応答時間は、次のカテゴリに細分化されて置くことができます。

データベースの応答時間:データベース操作によって消費される時間は、リクエストのチェーン全体は、多くの場合、最も時間のかかるものです。

サーバーの応答時間:サーバーが番組終了時刻を含み、そしてサービスが消費nginxの分布消費実行時間を要求します。

ネットワーク応答時間:これは、ネットワークハードウェアは、このような解析によって消費される時間として送信動作のために要求する必要があり、ネットワーク伝送です。

クライアントの応答時間:通常のウェブでは、アプリケーション・クライアントは、時間を浪費することはごくわずかであるが、ロジック混載処理、大量のクライアントならば、消費がシステムを作り、長い時間になりそうですボトルネック。

スループット

我々のテストでは、我々はより良​​いインタフェースTPS、TPS、パフォーマンスのパフォーマンスに反映されているように、TPS(秒あたりのトランザクション)インタフェースシステムにもっと注意を払う傾向にあります。ディスクのスループットとネットワークのスループット:システムでは、我々はまた、二つのカテゴリーにボトムアップからのスループットを置くことができます。

ディスクのスループットで見てみましょう、ディスクのパフォーマンスには、2つの重要な指標です。

一つは、私は、システムが処理できる単位時間/ O要求の数を参照してIOPS(入力/出力毎秒)、第二(または書込みサイクル)当たりの入出力は、I / O要求は、典型的に読み出されますデータまたは書き込み操作要求は、ランダム書き込み性能が懸念されます。このような小さなファイル(写真)、OLTPデータベース、メールサーバーを保存するように頻繁にランダム読み取りと書き込みのアプリケーションに適応します。

もう一つは、この手段は、単位時間当たりに正常に送信されたデータの量データスループットです。シーケンシャルリードの数が多い場合は、頻繁にアプリケーション、大量のデータの連続送信を書き、例えば、テレビ、ビデオ編集、ビデオオンデマンドVOD(ビデオオンデマンド)、キー尺度でスループットデータ。

次ルックネットワークスループットは、これがフレーム損失伝送ネットワークの不在を意味し、デバイスは、最大データレートを受け入れることができます。帯域幅さえ告げ密接に関連したCPU処理能力、ネットワークカード、ファイアウォール、外部インタフェースおよびI / Oスループットなどのネットワークと関係を持っていないだけで。メインスループット、内部プログラムのアルゴリズムと帯域幅の大きさのサイズは、ネットワークカードの処理能力によって決定されます。

コンピュータリソースの使用量の割り当て

通常、リソース使用量のCPU使用率、メモリ使用率、ディスクI / O、ネットワークI / Oので表さ 木のどの部分がショートボード、不合理な分布のいずれかを表示された場合、これらのパラメータは、システム全体のパフォーマンスへの影響は壊滅的なされ、バケツのようなものです。

耐荷重

システム圧力が上昇すると、あなたは、優しいかどうか、システムの応答時間の上昇カーブを観察することができます。このインジケータは、直接あなたに戻って、システムは、負荷圧力限界に耐えることができます。あなたが圧力測定システムを実行する場合たとえば、システムの応答時間は非常に多くの要求、限界までにスローされたエラーの多くを扱うことができないシステムまで拡張並行システムの数が増加します。

概要

今日の研究で、我々はそのパフォーマンスのチューニングがさらに大規模なシステムでは、システムの安定した、より優れたユーザーエクスペリエンスを作成するだけでなく、資源を節約するために会社を助けることができる知っています。

しかし、プロジェクトの初めに、私たちは、その優れた効率的な、コーディング、および優れたプログラミングを確保するために、時間だけで、途中で最適化パフォーマンスを介入する必要はありません。

プロジェクトが完了すると、我々はシステムをテストすることができ、我々は、標準的なパフォーマンスチューニング、応答時間、スループット、リソース割り当てコンピュータの使用、耐荷重容量と次のパフォーマンス指標を使用することができます。

プロジェクトの私自身の経験で背中を見て、ゲームを再充電する電気の供給システム、決済システムと課金システムがあり、ユーザレベルが万人レベルであり、かつ大規模な購買活動のすべての種類を負担する、システムのパフォーマンス、私は非常に厳しいんだそう。上記の指標を観察することによって、システムの性能を決定することに加えて、完全にシステムの安定性を保護するために、更新反復する必要が良いか悪いかです。

ここで、あなただけのスループット、応答時間を比較しない反復型開発、の異常なバージョンがあるかどうかを確認した後、パフォーマンステスト、システムのパフォーマンスを自動化することにより、参照標準として、システムのパフォーマンス指標の反復バージョンの前にある方法を、拡張します、このような直接負荷容量の指標だけでなく、システムリソースのCPU使用率、メモリ使用率、ディスクI / O、ネットワークI / Oなどのいくつかの間接的な指標の変化。

公開された24元の記事 ウォンの賞賛0 ビュー420

おすすめ

転載: blog.csdn.net/WillliveWillWork/article/details/105051535