(0)目次&概説
(1) ネットワークが遅い時
(1-1) 概要
(1-2) 想定シーン
(2) ネットワークが遅い時の調査の切り口
(2-1) 転送速度のチェック
(2-2) LANケーブルを確認する
(2-3) パフォーマンスモニタでメモリを確認する
(3) 用語の解説
(3-1) ページフォルトとは?
(3-2) 仮想メモリとは?
(1) ネットワークが遅い時
(1-1) 概要
「ネットワークが遅い」といっても様々な事象が含まれると思いますが、今回は下記のような症状があった場合に出来る対処について紹介します。
①サーバー間のファイルの転送が遅い
例えば1GBファイルのサーバー間の転送に15分かかり遅いケース(10mbps程度の速度が出てれば直ぐ完了するはず)。
②ローカルにあるファイルの読み込みが遅い
アプリケーション等の起動に非常に時間が掛かるケース(起動に必要なファイルの読み取りに時間が掛かっている)。
(1-2) 想定シーン
想定シーン例としては、下図のような外部ネットワークに接続していないスタンドアロン環境です。
(サーバーA)←→(LANケーブル)←→(HUB)←→(LANケーブル)←→(サーバーB)と接続されています。
またデータの流れとしては下記のようなフローを例に挙げて考えます。
①サーバーBのDBからBLOBデータをファイル化(HDD読み込み/書き込み)
②サーバーB⇒サーバーAに上記データを送信(パケットが送られる)
③サーバーAのファイルにコピー完了後(HDD書き込み)、アプリケーションにて当該データを読み込み(HDD読み込み)
(図40-1)
>目次にもどる
(2) ネットワークが遅い時の調査の切り口
(2-1) 転送速度のチェック
まずはファイルコピーにて転送速度をチェックします。例えばGB単位の大きなファイルを(サーバーA)→(サーバーB)に転送を行い、その転送速度をチェックする事でネットワークのスピードをざっくり把握します。例えば10Mbpsのネットワークで1GBのデータを転送したら、おおよそ13分程度になる想定です。
10Mbps = 1.25MB/秒 = 0.00125GB/秒
1G ÷ 0.00125GB/秒 = 800(秒) ≒ 13.3(分)
もしここで遅い様であれば、(図40-1)でいう②の箇所に遅い原因がある等の一次切り分けが可能と考えます。
(※注意)
クライアントマシンを介してデータを転送してしまうと、クライアントのメモリ等リソースを使い転送するため、正しい転送速度の検証ができません。リモートデスクトップ経由でサーバーにアクセスすれば、データ転送にはサーバーのメモリが使用されるため、正しい検証が行えます。
(図40-2) NG例:クライアントを介してデータを転送している
(図40-3) OK例:サーバにRDPでアクセスし、そこからデータ転送を実施
(2-2) LANケーブルを確認する
例えPCが高性能でも、正しいLANケーブルを使用していない事がネットワーク遅延の原因となることもあります。LANケーブルには規格があり、CAT5やCAT6といった種類により速度も異なってきます。どの種類がどういった用途に適しているのかは、下記のSo-netさんのサイトで詳しく紹介されています。
https://prebell.so-net.ne.jp/tips/pre_17112101.html
ご自身のLANケーブルの種類は、ケーブルに書かれた記載をチェックする事で知ることができます。
(2-3) パフォーマンスモニタでメモリを確認する
次に(図40-1)の③部分をチェックする観点を考えます。こちらは一案としてパフォーマンスモニタ等でCPUやメモリ等のリソースをチェックしていきます。例えば、ページフォルトをチェックし、その件数が突出して多い場合はメモリ不足を疑います。
1.パフォーマンスモニタ(perfmon.exe)を起動する
2.データコレクターセットの新規作成
[データコレクターセット]→[ユーザー定義]を右クリック→[新規作成]→[データコレクターセット]を選択します。
3.データコレクターセットの名前と作成方法
名前を入力し、作成方法を選択します。今回はカウンターを自分で選びたいので「手動で作成する」を選択します。
4.含めるデータの種類の選択
[データ ログを作成する]→[パフォーマンスカウンタ]パチェックを入れます。
5.記録するカウンターの追加
[追加]を押下し、カウンターを選択します。
次のカウンター選択画面では左上のリストから見たいカウンターを選択し、[追加]を押下して右側に追加していきます。追加が終わったら右下の[OK]を押下します。今回はメモリを中心に下記のカウンターをウォッチします。
Memory | Available MBytes | 利用可能なメモリ領域(メモリの余裕)を表します。一般的に5%以下だとボトルネックと判断するそうです。 |
Memory | Pages Faults/Sec | 1秒あたりに発生したページフォルトの回数です。こちらも継続的に5以上だとメモリに問題があると判断するようです。 |
Memory | Pages/Sec | 1秒あたりに行われたページングの回数です。ページングは少ない方が健全で、多い場合は物理メモリの不足が疑われます。 |
Physical Disk | Disk Read Bytes/sec | 読み込み中のディスクへのバイト転送速度 |
Physical Disk | Disk Write Bytes/sec | 書き込み中のディスクへのバイト転送速度 |
記録するカウンターの画面に戻ったら[完了]を押下します。
6.記録の開始
パフォーマンスモニタの画面に戻ったら、追加したデータコレクターを「右クリック」して[開始]を押下します。これにより、カウンターの記録が始まります。同様に終了する時も「右クリック」で[停止]を選択します。
7.生成されたファイルの確認
出来上がりのモニタ結果の保存先は画面に書かれているので、そのパスに行きファイルをチェックします。
(保存先例)
C:\PerfLogs\Admin\Test New Data Collector Set\
(3) 用語の解説
(3-1) ページフォルトとは?
要求したデータが物理メモリ上に存在せずにアクセスできなかった例外などを「ページフォルト」と呼びます。こちらも継続的に5以上の値で推移する場合にメモリに問題があると判断するようです。
(3-2) 仮想メモリとは?
ディスクの一部をメモリとして利用する際に、ディスク上に作成されるファイルの事です。別名で「ページングファイル」とも呼びます。
PCは物理メモリが不足した場合に、使用していないデータを仮想メモリに一時的に退避することで、動作が重くなるのを防いでいます。このようなデータの退避や再度物理メモリに移動する往復を「ページング」と呼びます。
ただし、注意点としてディスクI/Oが発生するため、物理メモリに比べると速度が遅くなります。近年のPCでは物理メモリを十分に積んでるため、そもそも仮想メモリを使うケースも減ってきているようです。
画面付きでとても参考になりました。ありがとうございます。
2-1転送速度チェック部分は10Mbps=1.25MB秒なのでざっくり13分位かと思います。
貴重なフィードバックを頂きありがとうございます。また確認およびご返信が遅れ申し訳ございませんでした。
本件、ご指摘頂いた通り計算が1桁ずれていたので修正いたしました。
また参考になったとのコメントを頂き、大変励みにもなります。
ありがとうございます。