サーバ名やホスト名の名前解決の早さ

2024年3月23日テクニカルメモ

WebFOCUSで利用されるサーバ名やホスト名

ブラウザからWebFOCUSにアクセスするURL(http://サーバ名/ibi_apps/~等)や、WebFOCUSからデータベースにアクセスする際に、サーバ名やホスト名が利用される場合がありますが、サーバ名やホスト名を利用する場合はそのサーバの位置(IPアドレス等)を名前から確認するためのタイムラグが発生します。

通常の名前解決は数ミリ秒で処理されるため、ほとんどの場合は気にならないレベルですが、環境によっては名前解決に1秒近い時間が掛かるケースがあります。

WebFOCUS周辺でサーバ名やホスト名が利用される箇所

①ユーザ端末からWebFOCUSサーバ名へのアクセス
 ユーザのブラウザからアクセスするURL(http://サーバ名/ibi_apps/~等)

②WebFOCUSサーバからデータベースサーバへのアクセス
 WebFOCUSの設定として定義しているデータベースサーバの名前
 また、データベースクライアント側の定義ファイルに利用されているサーバ名等
 データベースクライアント側の定義ファイル例:
 ・Oracleの場合 tnsnames.ora ファイル
 ・ODBCの場合 OSのデータソース設定

③WebFOCUSサーバからロードバランサへのアクセス
 WebFOCUSの内部処理でロードバランサの名前(転送元URL)を利用する場合があります。

名前解決が数ミリ秒遅いだけで性能劣化するのか?

過去事例でデータベースへの名前解決が0.8秒遅いというケースがありました。
例えば下図のような「親⇒子⇒孫」で連鎖する条件入力フォームがあった場合、それぞれで0.8秒遅延することになり、合計で2.4秒遅くなることになります。

名前解決の早さを確認する

ここでは、ping コマンドで計測する方法をご紹介いたします。
アクセス元の端末やサーバ上から、「ping サーバ名」と「ping IPアドレス」の両方を実行して時間差を確認します。

Windowsの場合

コマンドプロンプトから以下のコマンドで応答時間を確認します。

powershell -C Measure-Command {ping サーバ名}

結果例(約3.06秒ということが分かります):

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 3
Milliseconds      : 60
Ticks             : 30609074
TotalDays         : 3.54271689814815E-05
TotalHours        : 0.000850252055555556
TotalMinutes      : 0.0510151233333333
TotalSeconds      : 3.0609074
TotalMilliseconds : 3060.9074

Linuxの場合

以下のコマンドで応答時間を確認します。

time ping -c 4 サーバ名

結果例(約3.06秒ということが分かります):

4 packets transmitted, 4 received, 0% packet loss, time 3066ms
rtt min/avg/max/mdev = 0.030/0.032/0.038/0.005 ms

real    0m3.069s
user    0m0.000s
sys     0m0.003s

アクセスを早くする(名前解決を早くする)

サーバ名やホスト名を利用したい場合は、hostsファイル等で名前とIPアドレスを関連付けしておくと改善する場合があります。各サーバへのアクセスする際にサーバ名を使うことにこだわりが無い場合は、サーバ名ではなくIPアドレスを利用すると改善する場合があります。

サーバ名が含まれる可能性がある環境設定ファイル

以下のファイルにホスト名が使われている場合は、IPアドレスに変更した時にpingコマンドの応答が早くなるかどうか確認してみましょう。

  • WebFOCUSコンポーネント間の疎通設定
    /ibi/WebFOCUSxx/client/wfc/etc/odin.cfg
  • WebFOCUSリポジトリDBへの疎通設定(JDBC URL)
    /ibi/WebFOCUSxx/config/install.cfg
    /ibi/WebFOCUSxx/config/webfocus.cfg
  • レポート用DBへの疎通設定(データアダプタ)
    /ibi/srvxx/wfs/etc/edasprof.prf