過去のナビゲーションリンクのスキップSecure Global Desktop 4.31 管理者ガイド > ユーザーと認証 > タイムアウト値の増加

タイムアウト値の増加

負荷のかかっているアプリケーションサーバー上でアプリケーションを実行すると、Secure Global Desktop がアプリケーションの開始に失敗することがあります。 その場合は、ErrApplicationServerTimeout エラーが報告されます。

この問題は、vars.exp ログインスクリプトでタイムアウト時間を増やすことにより解決できます。

負荷のかかっているマシンでは、timeouts(loggedin) の値を増やすことをお勧めします。それでも ErrApplicationServerTimeout エラー報告によって起動が失敗する場合は、いずれかの clienttimer の値が小さいことが原因です。起動に時間がかる場合は、すべての clienttimer 値を大きくした方がよいでしょう。

タイムアウト値を増やすのは、問題が発生している場合だけにしてください。タイムアウト値を変更すると、アプリケーションの開始に時間がかかります。タイムアウト値は、アプリケーションサーバーの能力に合わせてください。

実行プロトコルエンジンのタイムアウト時間を除き、ここで説明するタイマーは、Microsoft Windows アプリケーションの起動時には使用されません。

タイムアウト デフォルト値 (秒)
timeouts(prelogin) 40
timeouts(loggedin) 20
timers(login) timeouts(prelogin) + 10
timers(env) 40
timers(runmain) 40
timers(build) 25
timers(total) 5

Expect のタイムアウト時間

Expect スクリプトのタイムアウト時間を超過すると、スクリプトはプロンプトの推測を試みて起動処理を継続します。

timeouts(prelogin)

ログインフェーズで、必要な文字列の照合のため、各 Expect コマンドに対して許可される時間。

たとえば、アプリケーションサーバーとの接続の確立後、スクリプトがログインプロンプトの照合に使用できる時間は、prelogin の秒数です。これが経過するとタイムアウトとなります。照合が成功するたびに、タイマーはリセットされます。ログイン時、prelogin タイマーは通常、ログイン、パスワード、およびシェルプロンプトの処理ごとにリセットされます。

prelogin タイマーの時間を増やすと、ログインの各フェーズに許される時間も増えます。その値は、最長のフェーズを完了できるように、十分に大きな値に設定する必要があります。

このタイムアウト時間を超過すると、スクリプトは「ログイン状態にあり、シェルプロンプトの照合に失敗した」と判断し、アプリケーションサーバーに「echo SYNC」を送信して promptstring を推測します。タイマー時間を超過したときにユーザーがログインしていないと、起動処理は失敗することになります。そうでない場合は、「echo SYNC」の直後にアプリケーションサーバーが送信した値がシェルプロンプトに設定され、起動処理が引き続き実行されます。

「echo SYNC」の確認が可能であり、シェルプロンプトが $ % # または > で正常に終了する場合は、prelogin タイマー値が短かすぎます。

timeouts(loggedin)

ユーザーのログイン後、必要な文字列の照合のため、各 Expect コマンドに対して許可される時間。

タイムアウト時間を超過すると、スクリプトは次のコマンドに移行します。 それが原因で、プロンプトが返される前にコマンドが送信される場合があります。このタイムアウトがよく発生するのは、スクリプトでのシェルプロンプトの設定が間違っている場合です。そのような場合、各コマンドは loggedin の秒数だけ待ってから次のコマンドに移行し、clienttimer のいずれか 1 つをトリガーすることができます。

clienttimer

clienttimer は、clienttimer コマンドを使って設定します。clienttimer の時間を超過すると、致命的なエラー ErrApplicationServerTimeout で起動処理がアボートします。

timers(login)

ログインフェーズが完了するまで (接続の確立から最初のシェルプロンプトの受信まで) の総時間。

このログインタイマー時間は、すべてのログインフェーズをカバーできるだけの十分な長さでなければなりません。各フェーズ (ログインプロンプト、パスワードプロンプト、シェルプロンプト) は、prelogin の秒数まで実行できます。 そのため、login 値は常に prelogin の値より大きくなければなりません。

prelogin タイマー値を大きくする場合は、login タイマー値も大きくし、その差を 10 以上に保つことをお勧めします。

timers(env)

最初のシェルプロンプトを受信してからアプリケーションサーバーの環境変数がすべてエクスポートされるまでの総時間。

timers(runmain)

最後の環境変数が設定されてからメインアプリケーションが起動されるまでの総時間。

timers(build)

実行対象のコマンド行の作成にかかる総時間。このタイマーは、Merge アプリケーションの起動時にだけ使用されます。

timers(total)

clienttimer の総数。この設定値の変更は、clienttimer の追加または削除を実行する場合にだけ必要です。

その他のタイムアウト時間

procs.exp ログインスクリプトでは、コマンドの発行時 (proc wait_for_prompt 内)、3 秒のタイムアウト時間が含まれています。

実行プロトコルエンジン内では、3 分のタイムアウト時間がハードコードされています。これは、起動要求を受信したときに起動され、起動処理が正常終了すると削除されます。このタイムアウト時間を超過すると、起動処理がアボートされます。

関連トピック