何だか良く解らないタイトルですが、XenAppで公開しているアプリケーションを起動しようとするとXenAppサーバーへのログオンプロセスの途中で終了してしまう現象に見舞われました。Citrixのナレッジに回避策があったので未来の自分のために覚え書きしておきます。
事象
XenAppで配信しているアプリケーションが起動しません。クライアントのCitrix Receiverは起動処理を始めているにもかかわらず、プログレスバーが進捗している途中で処理が終了してしまう様です。
公開アプリケーションを配信しているXenAppサーバーのイベントログを確認すると、本事象とは無関係かも知れませんがID:6001やID:6004が記録されています。また「デスクトップウインドマネージャはコード(0x40010004)で終了しました」も見られました。
これらの事象をちょっとググったら出てきました。まさにこの現象が起こっています。
ログオン処理に1分以上かかると公開アプリケーションの起動に失敗する
https://support.citrix.com/article/CTX12901
原因
XenAppサーバーへのログオン処理に1分以上かかると、XenAppのモジュールであるログオフチェッカーがログオフ処理を実行してしまう事が原因です。
ログオフチェッカーは公開アプリケーションが終了した後に、セカンダリプロセスが残っていた場合でもセカンダリプロセスを無視してユーザーをログオフさせるもので、無駄なセッションを残さないようにする優秀なツールなのですが、ログオン時にはこれが邪魔をしている様です。
詳細は前述のリンクに記載されていますが、簡潔に言えばログオン完了前にログオフされることが原因です。何ともアホらしい動きです。
解決方法
ログオフチェッカーの起動待ち時間をレジストリで設定して、ログオフチェッカーの起動を遅らせる事で対処します。
根本解決はログオン処理を高速化させる事だと思うのですが、移動ユーザープロファイルを利用しているとプロファイルを保存するファイルサーバーのパフォーマンスやネットワークのチューニング、さらにグループポリシー等も絡むハナシになるので、根本対策が非常に難しいと思います。そのため、ログオフチェッカーの起動を遅らせる方が、「アプリが起動しない!」という問い合わせを手っ取り早く解決する事が出来ます。
もっと根本的な解決策はログオン処理時にはログオフチェッカーを無効化する事なのですが、ログオフチェッカーが無いと、アプリケーションが終了した後にセカンダリプロセスが残ってしまい、XenAppサーバーにいつまでもユーザーのセッションが残り続ける問題が起こってしまいます。
さて、設定するレジストリは・・・
HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control¥Citrix¥Wfshell¥TWI
値の名前:LogoffCheckerStartupDelayInSeconds
種類:REG_DWORD
値のデータ:0~600(秒)
ログオフチェッカーの起動を遅らせる時間を秒で指定します。60を設定するとログオフチェッカーの起動が1分遅れ、ログオフチェッカーが起動した後1分待機しますので、合計2分間でログオン処理が終わればOKとなります。もしこれでも事象が改善しない場合値を増やしていけば良いです。
私が管理している環境では取りあえず60秒に設定しました。ユーザープロファイルが肥大化しているユーザーは60秒では足りないかも知れませんし、環境によって最適値が変わるので調整してみましょう。
追加情報(2021/1/6)
いつの間にかアプリケーションの起動時間に関する待ち時間に関するパラメーターが追加されていました。この記事を書いたのが2014年4月2日で、以下に記載するCitrixのナレッジ公開が2014年5月1日なので、ホントにタッチの差だったようです。
アプリケーションへの接続が開始されるがタイムアウトの後消える
https://support.citrix.com/article/CTX140654
こちらは、アプリケーションの起動を監視しているパラメーターの様で、既定時間(1分)を超えるとタイムアウトしてしまい、セッションが終了してしまいます。
現象
https://support.citrix.com/article/CTX140654
任意のデリバリーグループからのノートパッドのようなホストされたアプリケーションに接続する場合、アプリケーションは最初に開き始めます。しかしながら、ローディングの後、ダイアログボックスは消えます。また、アプリケーションが現れません。
原因
デフォルト1分のタイムアウトを超過し、アプリケーションが開始するのにより長い時間がかかったためにセッションが自動的に終了する場合、問題が生じます。
ログオフチェッカーと同じくTWI配下にキーを作成しますが、こちらはミリ秒での指定なので注意が必要です。デフォルトは60秒(60000)が設定されています。また最小値は10秒(10000)のため10000以下を設定しても10000に上書きされます。環境によって変わるので最適値は分かりませんが、5分(300000)くらいに設定しておけば、取り合えず問題は回避できるのではないでしょうか。
HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control¥Citrix¥Wfshell¥TWI
値の名前:ApplicationLaunchWaitTimeoutMS
種類:REG_DWORD
値のデータ:10000~
なんか凄いレアなドキュメント見つけました。勇気がある人は買ってみてください。
コメント