パフォーマンス テスト - パフォーマンスのボトルネックを特定するためのアイデア (14)

さまざまなパフォーマンス問題のボトルネックを分析するにはどうすればよいですか?

インターフェイスの応答が遅い

まず印刷機側にボトルネックがないかを確認し、印刷機のCPU、メモリ、ディスクIO、ネットワークIOなどのリソースがフル負荷になっているかを監視する必要があります。1 回の印刷にあまり高い同時実行数を設定すると同時に、損失を減らすために不必要な相関とチェックポイントを減らすことはお勧めできません。テスト対象のアプリケーションが APM プローブに接続されている場合、印刷機側で測定されたトランザクション応答時間と、APM ツールによってカウントされたサーバー側の処理時間との差を確認できます。サーバー側の処理時間はプレッシャーを示しており、マシン側にボトルネックがあります。次に、サーバー側のボトルネックかどうかを確認します。実際にサーバー側の処理に時間がかかる場合は、APM ツールを使用してリンク分析を実行することをお勧めします。トランザクション リンクの時間のかかる増加傾向から、最終的なボトルネック ポイントを見つけることができます。

たとえば、トランザクションが 3 つのサービス ノード A、B、C を順に通過する場合、A と C の内部処理には時間がかかるが、サービス ノード B の内部処理に時間がかかる場合は、サービス ノードがB およびその関連するミドルウェア、データベース、その他のリソースにボトルネックがある可能性があります。

データベースとのやり取りには時間がかかりますか?

その場合、ボトルネックは通常、データベース接続プーリングと遅い SQL に現れます。接続プールを使用しない場合、サービスは JDBC を介してデータベースと直接対話します。この場合、アプリケーション サーバーには接続プールが枯渇するという問題はありませんが、データベース サーバーには総接続数に制限があります。接続数 MySQL を例に挙げると、max_connections を通じて最大接続数を設定できます。データベース サーバー上の接続の合計数がなくなると、クライアントで接続を取得するのに時間がかかります。データベース接続の作成と破棄は高価な操作です。システムの運用効率を最適化するには、頻繁に接続を確立するシステムのオーバーヘッドを削減する必要があります。接続プール テクノロジを使用することをお勧めします。接続プーリングの使用については、Druid コンポーネントを例として使用して説明します。Druid は Alibaba のオープンソース データベース接続プールであり、新星として DBCP や c3p0 よりも高いパフォーマンスを示し、その使用がますます広がっています。Druid コンポーネントは、アプリケーションがアクセスする必要があるデータベースごとに接続プールを維持します。アプリケーションがデータベースにアクセスする必要がある場合、接続プールから接続を借用する必要があります。SQL を実行して応答結果を取得した後、接続は接続プールに返されます。

接続プールの関連パラメータには主に、initialSize、minIdle、maxActive が含まれます。initialSize は、初期化中に確立された物理接続の数を表します。初期化は、init メソッドが呼び出されたとき、または getConnection メソッドが初めて呼び出されたときに発生します。minIdle は、接続プールの最小数を表します。Druid は、接続内の接続を定期的にスキャンします。アイドル状態の接続の数がこの値より大きい場合は、冗長接続を閉じます。そうでない場合は、接続プールの最小数を満たすためにさらに接続を作成します。maxActive は接続プールの最大数を表します。接続プール内のすべての接続がビジー状態の場合、データベースへの新たなアクセス操作が発生すると、接続の取得に時間がかかります。接続プール内の接続が枯渇する一般的な原因は次のとおりです。

1) SQL が遅いと接続に時間がかかります。このとき、APM ツールやデータベース サーバー監視を使用して、SQL が遅いかどうかを確認する必要があります。

2) ビジネスロジックにおいてデータベースアクセスが頻繁に発生する。たとえば、ループ内でデータベースにアクセスするロジックが大きい場合、データベースへのアクセス頻度が非常に高くなり、インタラクションのたびに接続を消費したり、接続を返したりするため、接続不足が発生しやすくなります。可能な限りバッチ モードに変換し、接続プールの負荷を軽減するためにクエリを実行します。

3) 接続プールの設定が小さすぎます。たとえば、Druid のデフォルトの最大接続数は 8 です。アプリケーションがデータベースと頻繁に対話する場合は、接続プールを適切に増やすことができます。ただし、次のことに注意する必要があります。

おすすめ

転載: blog.csdn.net/seanyang_/article/details/132920924