用語集
PV
ページビュー、ページビュー。閲覧する読者に呼び出されるページの数。一度記録されたWebページを開くか、ページを更新するたびに、。複数のユーザーが同じページにアクセスし、累積量を参照してください。
紫外
ユニークビジター、ユニークビジター。それは、インターネットを介してアクセス個人このページを閲覧することをいいます。一定の期間内に、異なる訪問者の数は、サイトにアクセスするには、各訪問者は一度だけカウントされます。クライアントのコンピュータでは、00:00〜24:00のページが一度だけ数え、何度も訪問しました。例えば、ユーザは、水曜日に3回訪問したと仮定し、木曜日は水曜日に一回、1回訪問したPV、木曜日も1曲のPVと呼ばとして記録。一般的にクッキーで計算。
TPS
秒あたりのトランザクション(毎秒送信されるものの数の処理)、すなわち、第2のサーバプロセスごとのトランザクションの数。PSは、データベースにアクセスするためのメッセージ及びプラス一人のユーザにメッセージを備えます。
QPS(秒あたり或RPSリクエスト)
秒あたりのクエリ。毎秒クエリ。指定された時間内にどれだけのトラフィック処理の尺度。
すなわち、毎秒の要求に応じて、すなわち、最大スループットであり、フェッチ/秒に相当します。
同時/平均応答時間のQPS =数
サーバシステムのパフォーマンスに影響を与える要因
サービスのパフォーマンスを測定し、2があります。
- QPS(クエリごと第二に、1秒あたりの要求数)
- 応答時間(応答時間、RT)、サーバーの応答時間がかかるプロセスが理解されるであろう。
通常の状況下では、応答時間は、高いQPS短いです。シングルスレッドの場合には、線形です。しかし、無限に成長しない、RT制限が常にあります。
マルチスレッド、合計QPS =(1000ミリ秒/応答時間)*スレッドの数。
時間とQPS間の応答の関係
Webシステムのために、典型的には、CPUの処理時間の応答時間とスレッドコンポーネントの待ち時間による。
システムアップグレードのパフォーマンスのためにスレッドの待ち時間を減らすことによって、素晴らしいではありません。パフォーマンス上の実際の効果は、CPUの実行時間です。
CPUの実行時間が、あなたはQPSが倍増やすことができれば、実際の試験の後、それを半分に低減されます。
QPSのスレッドの数に対する影響
式によれば总QPS = (1000ms/ 响应时间)* 线程数
、直感、スレッドQPSの増加より高いです。実際には、スレッドの数は、より良いではありません。スレッド自体がリソースを大量に消費するだけでなく、他の要因によるものであるため。例えば、マルチスレッド・システムのコストを切り替えるスレッドが高くなり、各スレッドは、特定のメモリを過ごすことになります。(シングルスレッドの言語、でも、単一のサーバー上に複数のインスタンスを作成し、サーバ自体がリソースを制限することができる。例えば、nodeJSはPM2を使用することができ、単一のサーバー上で複数のスレッドが、サーバー自体限られたリソースを起動します。 )
スレッドの合理的な数を設定する方法
それでは、どのようにサーバー上のスレッドカウントが行う設定するのですか?次のように一般的な式は次のとおりです。
スレッド数= 2 * CPUコア+ 1
ベストプラクティスの式:
スレッド= [(スレッドのスレッドCPU時間レイテンシ+)/スレッドCPU時間】CPUの数×
もちろん、最善の方法は、スレッドシステムの性能試験の最適な数を見つけることです。
ボトルネックを見つける方法
私たちは、ツールシステムを監視することができ、システムのパフォーマンスのボトルネックことがわかりました。パフォーマンスのボトルネックは通常ようにCPU、メモリ、ディスク、ネットワーク、データベース、及びを発生する場所。
多くの場合、ボトルネックはメモリ・ストレージ・システムを発生する可能性があるキャッシュ・システムは、I / Oです。
CPUのボトルネックが発生したかどうかをどのように短い答えを決定するには?我々は超えていない場合は、改善のためのCPUは、まだ部屋あることを示し、QPSの上限に達したときに、サーバーのCPU使用率が95%以上ではない、観察することができます。
パフォーマンスの最適化プロセス
- ショートボードを検索します。
- データを減らします。実際には、特に二つの場所がパフォーマンスに影響を与えるがあります。まず、サーバは、必然的にお互いにバイトにデータ文字の処理に存在し、第二は、GZIP圧縮HTTPリクエスト、並びに時間のかかる密接に関連してネットワーク伝送、およびデータサイズを行うことです。
- データ分類。データの最初の画面、第一の重要な情報、二次情報非同期ロード。
- 中間リンクを削減します。
レポート:パフォーマンステストのインデックス
によって複雑 | 応答時間 | アプリケーションサーバーのCPU | データベース・サーバーのCPU | TPS |
---|---|---|---|---|
50 | 1S | 50% | 20% | 50 |
圧力測定ツール:stresstester
導入されたpom.xmlファイルパッケージ
< 依存> < groupIdを> com.taobao.stresstester </ groupIdを> < たartifactId > stresstester </ たartifactId > < バージョン> 1.0 </ バージョン> </ 依存関係>
テストコードを書きます:
/ ** * @Title:PressTest * @description:ストレステスト、QPSのユーザ情報を取得するための試験方法 *の@paramのパラメータ * @return 空隙戻り型 * @throws * / @Test 公共 ボイドPressTest(){ int型のconcurrencyLevel = 100; // 同時の数 INT totalRequest = 1000; // 要求の総数 StressResult StressTestUtils.test結果=(のconcurrencyLevel、totalRequest、新しい新しいStressTask(){ @Override 公衆オブジェクトdoTask()がスロー例外{ getUserDetailを(); 戻り ""; } }); System.out.println(StressTestUtils.format(結果))。 }
テスト結果:
フィギュアのテストは、3秒間限り要求が、問題があることは明らかであり、その結果、これは小さすぎる設定されている接続プールを配置する、分析することで、許容されない、データベース接続がリソースを待っている要求ブロックにつながる、過大によって複雑、小さすぎると、最適化アプローチ:接続プール内のスレッドの数を増やし、データベース接続の数を増やします
インフォメーションます。https://mp.weixin.qq.com/s/4pjydskyaBqyjk0TDNtSVA