目次


Rational Performance Tester および Citrix のトラブルシューティングとベスト・プラクティス

Comments

はじめに

IBM Rational Performance Tester Extension for Citrix Presentation Server は、Citrix クライアント・ソフトウェアの一部となっている Citrix ICA シミュレーション API を使用して、Citrix ベースのアプリケーション (Citrix Presentation Server or XenApp 内または XenDesktop ソフトウェア内で動作する仮想化アプリケーション) でのユーザー操作を記録し、再生します。この機能を可能にするために、バックグラウンドでは複数の Microsoft Windows プロセスがやりとりします。このチュートリアルでは、Rational Performance Tester を使用した Citrix 負荷テストに取り入れるべきベスト・プラクティスと、よくある問題をトラブルシューティングするためのヒントについて説明します。Citrix パフォーマンス・テストのベスト・プラクティスについては説明しないので、それらのベスト・プラクティスについては、このリンク先の Rational Performance Tester Knowledge Center を参照してください。

このチュートリアルは、テストの記録中の問題に関するセクションと、再生のテストおよびスケジュールに関するセクションの 2 つに分けて、トラブルシューティングとベスト・プラクティスを説明します。

テストの記録中に発生する Citrix エラー

AllowSimulationAPI キーが Windows レジストリー内に存在しない

Citrix クライアント (Citrix Receiver または Citrix Online Plug-in) をインストールした後に初めて起動して記録しようとすると、記録用に開いた Citrix クライアント・ウィンドウに「Unsupported Function (サポートされていない機能)」というエラーが目立って表示されることがあります。このエラーは、Windows レジストリー内の Citrix 関連のエントリーが誤っているか不完全な場合に発生します。これらのエントリーのうち最も重要なのは、Citrix クライアントが ICA クライアント・シミュレーション API をアクティブにするために使用する AllowSimulationAPI レジストリー・キーです。

このエラーが発生した場合は、管理特権を持つユーザーとして Citrix のインストーラーが実行されていることを確認してください。管理ユーザーとして Citrix クライアントをインストールしたとしても、AllowSimulationAPI の書き込みに失敗することがたまにあります。その場合は、このエントリーを手作業で作成する必要があります。

以下に、AllowSimulationAPI キーが存在するかどうかを確認し、必要に応じて作成する手順を説明します。

  1. Windows レジストリー・エディターを開きます (「Start (スタート)」 > 「Run (実行)」 > 「Regedit」)。
  2. 32 ビット版 Windows を使用している場合は、「HKEY_LOCAL_MACHINE」 > 「SOFTWARE」 > 「Citrix」 > 「ICA Client」 > 「CCM」の順に展開します。
  3. 64 ビット版 Windows を使用している場合は、「HKEY_LOCAL_MACHINE」 > 「SOFTWARE」 > 「Wow6432Node」 > 「Citrix」 > 「ICA Client」 > 「CCM」の順に展開します。
    Windows レジストリー内の ICA クライアント・フォルダー
    Windows レジストリー内の ICA クライアント・フォルダーのスクリーンショット
    Windows レジストリー内の ICA クライアント・フォルダーのスクリーンショット
  4. ICA クライアントの Windows レジストリーのエントリーに、「CCM」フォルダーがあり、このフォルダー内に AllowSimulationAPI キーがあること、そしてその値が 1 に設定されていることを確認します。値が 1 であれば、このセクションの残りのステップは無視してください。
  5. 「CCM」フォルダーまたは AllowSimulationAPI キー値が存在しない場合は、「ICA Client」フォルダーを右クリックして「New (新規)」 > 「Key (キー)」項目の順に選択します。「ICA Client」フォルダーを親とする新しい子フォルダーが作成されます。
  6. 新規フォルダーの名前を「CCM」に変更します。
  7. このフォルダーを右クリックして「New (新規)」 > 「DWORD (32-bit) Value (DWORD (32 ビット) 値)」の順に選択します。
  8. 新しい属性に「AllowSimulationAPI」という名前を付けます。
    AllowSimulationAPI の作成
    作成された AllowSimulationAPI 属性を表示した Registry Editor のスクリーンショット
    作成された AllowSimulationAPI 属性を表示した Registry Editor のスクリーンショット
  9. 「AllowSimulationAPI」をダブルクリックします。「Edit DWORD (32-bit) Value (DWORD (32 ビット) 値の編集)」ダイアログ・ボックスが表示されます。
    AllowSimulationAPI の編集
    AllowSimulationAPI を編集するダイアログ・ボックスのスクリーンショット
    AllowSimulationAPI を編集するダイアログ・ボックスのスクリーンショット
  10. 「Edit DWORD (32-bit) Value (DWORD (32 ビット) 値の編集)」ダイアログ・ボックスの「Value data (値データ)」フィールドに「1」と入力してから、「OK」をクリックします。
  11. 以上の手順を行った後も記録の問題が解消されない場合は、システムを再起動してレジストリーの設定が適用されるようにします。

Citrix プロセスのクリーンアップ

Citrix クライアントが起動時に開始するいくつかのプロセスのうち、注目すべきプロセスとして Citrix 接続センター (concentr.exe) と Citrix 接続マネージャー (wfcrun32.exe) の 2 つがあります。これらのプロセスは、Citrix サーバーとの接続を切断して Citrix クライアント・ウィンドウを終了した後も、引き続き実行されます。

このため Rational Performance Tester を使用して Citrix テストの記録を開始する際に以下のエラーが表示されます。これらのエラーは、記録用の Citrix クライアント・ウィンドウを開くと発生します。

  • Unsupported Function (サポートされていない機能)
  • Protocol Driver Error (プロトコル・ドライバー・エラー)

この状態では、新しい Citrix テストをキャプチャーしたり生成したりすることはできません。この状態から回復して正常に記録できるようにするためには、Citrix 接続センター (concentr.exe) および Citrix 接続マネージャー (wfcrun32.exe) を終了する必要があります。こうすることで、Citrix クライアントは次回の接続試行の際に、これら 2 つのプロセスの新しいインスタンスを開始します。プロセスを終了するには、Windows タスク・マネージャーを使用するという方法、または Windows コマンド・ラインから taskkill ユーティリティーを実行するという方法のいずれかを使用できます。

テストやスケジューリングされた再生が異常終了すると、Rational Performance Tester によって開始された CitrixRuntime.exe プロセスと、Citrix クライアントによって開始された wfica32.exe プロセスがシステム内で実行中の状態のままになる可能性があります。記録中にエラーが発生した場合は、新しい記録を開始する前に、これらのプロセスを終了してください。その際は、必ず concentr.exe プロセスから終了する必要があります。

Citrix Online Plug-in と Citrix Receiver の違い

Citrix Online Plug-in は、Citrix クライアント・ソフトウェアの旧称です。2012 年 4 月に最後にリリースされた Citrix Online Plug-in スタンドアロン (V12.3) は現在サポートされていません。Citrix Online Plug-in ソフトウェアは、現在 Citrix Receiver パッケージに含まれています。最初の Citrix Receiver (V3.1) に Online Plug-in V13.1 が統合されて、そのバージョン命名法は同じパターンで引き継がれています。

Rational Performance Tester の記録と再生に使用するマシンには、Citrix Online Plug-in と Citrix Receiver の両方がそれぞれ別個にインストールされている状態であってはなりません。これを確認するには、Windows コントロール・パネル内で「Add/Remove Programs (プログラムの追加と削除)」ユーティリティーを表示して、どちらか一方だけがインストールされていることを確認します。

アプリケーション・ウィンドウを最大化した状態で記録すること

記録中にユーザーがマウスをクリックすると、ICA クライアント・シミュレーション API はそのユーザー操作が行われた位置の x 座標と y 座標をキャプチャーします。再生中は、Rational Performance Tester が同じ座標上で再生を行うよう、ICA クライアント・シミュレーション API に指示します。したがって、ユーザー操作は、再生中のアプリケーション・ウィンドウの相対位置が異なる影響を受けることになります。アプリケーション・ウィンドウを画面上の異なる相対位置に開くと、必要な GUI 要素の位置が変わることから、マウス・イベントはアプリケーションに影響を及ぼさなくなり、その結果、再生が失敗します。

以下の図に、単純なアプリケーションとして Windows のメモ帳に対して記録された Citrix テストが示されています。このテスト内で記録されたユーザー操作は以下のとおりです。

  • ユーザーがメモ帳を開いた
  • ユーザーが「foo」と入力した
  • ユーザーがマウスをクリックしてアプリケーションを終了した

このテストには、座標 (577, 402) 上でのマウスの左クリック・イベントが含まれています。これらの座標は、ユーザーが「Save (保存)」ダイアログ・ボックスを閉じた位置に対応します。

Citrix マウス・クリック・テストの要素
Citrix マウス・クリック・テスト要素のスクリーンショット
Citrix マウス・クリック・テスト要素のスクリーンショット

再生中に、「Save (保存)」ダイアログ・ボックスまたはメモ帳ウィンドウが記録中に開いていた位置とは別の位置に開いた場合、座標 (577, 408) 上でのマウス・クリックには効果はありません。この Citrix テストによってログアウトが失敗することになり、同じユーザーが次回ログインしようとすると予期しないウィンドウが開くことになります。

このような事態を避けるために、記録中はできるだけホットキーまたはショートカットを使用してください。特定の操作にショートカットやホットキーが関連付けられていない場合は、メイン・ウィンドウを最大化して操作を記録してください。アプリケーション・ウィンドウが最大化された状態であれば、相対位置が変わる可能性はほとんどないため、確実に再生できるようになります。そのためには、メイン・ウィンドウを最大化する Windows ショートカットのキーボード操作を、アプリケーションの起動直後に記録してください。

マルチユーザー Citrix スケジュールを実行する際のベスト・プラクティス

一般に、マルチユーザー Citrix スケジュールはワークベンチ・マシン上で再生するのではなく、IBM Rational Performance Tester Agent ソフトウェアを使用した別のマシン上で再生します。このセクションでは、Rational Performance Tester Agent 上でマルチユーザー Citrix スケジュールを実行する際のベスト・プラクティスをいくつか紹介します。

Citrix 再生用エージェント・マシンのセットアップ

リモート・エージェント・マシンを使用してワークロードを実行する際に知っておかなければならない重要な点は、以下のとおりです。

  • Rational Performance Tester Agent は 32 ビット版でなければなりません。Citrix テスト再生は、64 ビット版 Agent ソフトウェアを使用しては機能しません。
  • AllowSimulationAPI のレジストリー・エントリーがなければ、Citrix 再生は機能しません。ワークベンチ・マシンの場合と同様、Citrix クライアントは管理特権を持つユーザーとしてインストールされていなければなりません。
  • AllowSimulationAPI レジストリーが正しい場所に存在し、その値が 1 に設定されていることを確認してください。

同時ログイン数を制限すること

負荷テストのシナリオでは、複数の仮想ユーザーがログインし、操作を実行し、ログアウトするというループを長期間にわたって繰り返すのが一般的です。1 回の再生においてシステム内の仮想ユーザー数が増えることから、複数の Citrix ユーザーがサーバーに同時にログインする可能性があります。複数のユーザーが同じエージェント・マシンから Citrix サーバーに同時にログインすると、再生エラーの原因となる、Citrix セッションとの信頼性の問題が発生するおそれがあります。環境要因 (ログイン完了までの所要時間など) に依存するマルチユーザー・スケジュールの再生中に、この問題が発生することはまれなので、以下に説明する解決策をあらゆるスケジュールに適用することはしないでください。この解決策は、必要な場合に限って使用してください。

事前準備時間を利用してユーザー・ログインを分散させると、この問題を軽減するのに役立ちます。ただし、ループを使用して長期間にわたって実行されるテスト内では、事前準備時間を利用してユーザー・ログインを分散させるだけでは十分でないことがあります。その一方、複数の同時ログインを防ぐようにスケジュールをセットアップするという方法もあります。

以下の図に、同時ログインを防ぐ 1 つの手法を示します。この例では、ファイル・システム内に、カスタム・コード要素を使用してログイン・ロック・ファイルを作成しています。このファイルは、ログイン要素が開始される前に適用されます。ユーザーがログインを完了すると、別のカスタム・コードによって、このファイルが削除されます。

Citrix ログインをロックするカスタム・コード要素
Citrix ログインをロックするカスタム・コード要素のスクリーンショット
Citrix ログインをロックするカスタム・コード要素のスクリーンショット

以下のリスティングに、上記のコードを実行する仮想ユーザーのコードを記載します。このコードは、ログオンに進む前にロック・ファイルが存在していないことを確認します。ロック・ファイルが存在する場合、システム内でロック・ファイルが利用できなくなるまで待機します。また、このコードには古くなったロック・ファイルを検出するメカニズムも組み込まれています。

仮想ユーザー・コード
package customcode;

import java.io.File;
import java.io.IOException;
import java.util.Calendar;
...
public String exec(ITestExecutionServices tes, String[] args) { 
    File connectionLock = new File("C://path//to//lockFile"); 
    while(true){ 
        if(connectionLock.exists()){
            tes.getTestLogManager().reportMessage("Another VU logging in now. Will try later."); 
            try { // Delete stale lock file if any 
                long timeStamp = connectionLock.lastModified(); 
                Calendar rightNow = Calendar.getInstance(); 
                 if ((rightNow.getTimeInMillis() - timeStamp) > (5 * 60 * 1000)){ //> 5 mins
                     tes.getTestLogManager().reportMessage("Stale lock file to be removed");
                     connectionLock.delete();
                 }
                 //zzz... 
                 Thread.sleep(1000);
                } catch (Exception e) { 
                    e.printStackTrace();
           }  
       }else{
            try {
                 connectionLock.createNewFile();
                 tes.getTestLogManager().reportMessage("Creating Lock File");
            }catch (IOException e) {
                e.printStackTrace();
            } 
      break;
      }
 }
 return null;
}

以下のリスティングに、ロックを解除するカスタム・コードを記載します。このコードは、ユーザーがログインに成功した後に実行する必要があります。

接続のロックを解除するサンプル・コード
 ... 
public String exec(ITestExecutionServices tes, String[] args) {
    File connectionLock = new File("C://path//to//lockFile"); 
    if(connectionLock.exists()){
        tes.getTestLogManager().reportMessage("Removing login lock file"); 
        connectionLock.delete();
     }
     return null;
}

注: カスタム・コードを使用してログインをロックするには、別の方法もあります。例えば、実行エンジン・データ領域を使用するのも、その 1 つです。

まとめ

Citrix パフォーマンス・テストは、経験を積んだ開発者にとっても難しいテストです。クライアント・システムや、Rational Performance Tester と Citrix ICA クライアント・シミュレーション API のやりとりをセットアップするのは、込み入った作業になる場合があります。このチュートリアルでは、よく発生するいくつかの問題と、この問題の解決策を説明しました。Citrix パフォーマンス・テスト・プロジェクト内で発生する可能性のある障害を解決するには、このチュートリアルで提供した情報と Rational Performance Tester ナレッジ・センターを参考にしてください。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps, Rational
ArticleID=1037856
ArticleTitle=Rational Performance Tester および Citrix のトラブルシューティングとベスト・プラクティス
publish-date=09232016