前稿では Apache JMeter を使用し、WebDirect 16 に対して25セッションでレコードを作成するテストを行いました。結果、旧版 WebDirect に比べパフォーマンスが向上し、エラー(レコードの作成失敗)が発生しないことを確認しました。 WebDirect 16 が実用段階に近づいていることを実感しました。
今回は前回と同じく JMeter を使用し10~500+ のスレッドからレコードを作成するテストを実施しました。
WebDirect 16 で 500 同時接続を実現するためのワーカマシン構成
最初にインストールについて少しだけ触れます。WebDirect 16 では、1台のマスタマシンと 最大4 台迄のワーカマシンを構成できます。インストール自体は、下図のようにマスタマシンかワーカマシンを選択するだけなのでとてもシンプルです。
マスタマシンかワーカマシンかをインストール時に選択すればよい |
ワーカマシン展開の詳細は、FileMaker 16 WebDirect ガイドの『展開オプション』の項をご覧ください(p20~30) 。以下の抜粋イメージが参考になると思います。
FileMaker® Server16インストールおよび構成ガイド『第 3 章 複数のマシンでの FileMaker Server の展開』(P.22)より |
サーバ構成
今回のテストでは、 Hyper-Vを 搭載する2台の物理マシンを用意し、1台に3つの仮想サーバ(ワーカマシン 1~3)、もう1台に2つの仮想サーバ(ワーカーマシン 4 と 5)を入れています。
-
マスタマシン(兼ワーカマシン1):
CPU: 3.0Ghz
コア数/メモリ: 4core 8GB RAM(FileMaker社推奨構成)
Windows Server 2012 R2 (64bit)
-
ワーカマシン2:
CPU: 3.0Ghz
コア数/メモリ: 4core 8GB RAM
Windows Server 2012 R2 (64bit)
- ワーカマシン3:
CPU: 3.0Ghz
コア数/メモリ: 4core 8GB RAM)
Windows Server 2012 R2(64bit)
-
ワーカマシン4:
CPU: 2.93Ghz
コア数/メモリ: 4core 8GB RAM
Windows Server 2016 (64bit)
- ワーカマシン5:
CPU: 2.93Ghz
コア数/メモリ: 4core 8GB RAM
Windows Server 2016 (64bit)
WebDirect のロードバランス
JMeter によるテストに入るまえに、異なる 5 台のクライアントマシンの Web ブラウザから WebDirect 16に同時アクセスし、WebDirect がどのようにロードバランスを行うのか ― どのようにマスタ機が接続をワーカマシンに割り振るのか ― を観察してみました。
JMeter のような負荷テストツールではなく、実際のブラウザで WebDirect のリアルな動きを確認しておくことは、意味があると思われます。
JMeter のような負荷テストツールではなく、実際のブラウザで WebDirect のリアルな動きを確認しておくことは、意味があると思われます。
結果として、マスタマシン(兼ワーカマシン1)にクライアント接続が割り当てられることはなく、ワーカマシン ワーカマシン2 に 2 接続、ワーカ3、4、5 にそれぞれ 1 接続ずつ割り当てられました。
また、ひとつのWebクライアントが複数の 5つのブラウザタブを開いた状態で、WebDirect にアクセスした場合にも、ワーカマシン2 に 2 接続、ワーカマシン3、4、5 にそれぞれ 1 接続が割り当てられましたが、この時もワーカマシン1 に割り当てられることはありませんでした。
このように、WebDirect は基本的に、接続先のワーカマシンの負荷状態を判断し、より負荷の低いワーカにルートします。
※ワーカマシン1(マスタ) はデータベースサーバおよび管理ツールが稼働しており、他のワーカマシンに比べると負荷が高いため、WebDirect 割当先になりにくいと考えられます。もちろん、マスタ1台の構成では、 このマシンがWebDirect の処理も併せて行います。
JMeterシナリオ
JMeter を使用しセッションを10~500+作成、各セッションから FileMaker のスクリプトを実行して出庫伝票(ヘッダレコード1、明細レコード1)するシナリオを作成しました。
1 台構成でのテストと結果
さて、JMeterによるテストを見ていきます。最初にマスタ1台だけの構成で上記のJMeterシナリオを実行してテストを行いました。結果は下表のとおりです。表中、Ramp(秒) はすべてのスレッドを送信し終わるまでの所要秒数を示しています。
表の見方 を テストNo 4(スレッド=100)を例に説明します。No.4 は、0.5秒間に100のスレッドを作成し、開始から終了までに 6.4 秒かかっていることを示しています。失敗数は作成されなかったレコード数(エラー)で、No.4は 100 すべてのスレッドが成功し、100 件の出庫伝票が作成されました。 尚、各テストは特に記載が無ければ 5 回ずつ実施し、所要時間と失敗数はその平均値をとっています。
【表1】
No | ワーカ数 | スレッド | ループ | Ramp (秒) |
所要時間(秒) | 失敗数 | 1Recの平均作成時間(秒) | 備考 |
1 | 1 | 10 | 1 | 0.5 | 1 | 0 | 0.100 | |
2 | 1 | 20 | 1 | 0.5 | 1.2 | 0 | 0.060 | |
3 | 1 | 50 | 1 | 0.5 | 3.4 | 0 | 0.068 | |
4 | 1 | 100 | 1 | 0.5 | 6.4 | 0 | 0.064 | |
5 | 1 | 200 | 1 | 0.5 | 14 | 0 | 0.070 | 2回計測 |
6 | 1 | 300 | 1 | 0.5 | 23 | 0 | 0.077 | 1回計測 |
7 | 1 | 350 | 1 | 0.5 | 19 | 76 | 0.054 | 1回計測 |
8 | 1 | 400 | 1 | 0.5 | 17 | 142 | 0.043 | 1回計測 |
FileMaker社はマスタ1台構成下での最大接続数 を100 としているだけあり、スレッド数 10 ~ 100 は安定して動作しました。
さらにスレッド数 100超のテストも行いました。 その結果が No.5以降ですが、100 を超過しても同時接続ライセンスがあれば接続を受け付けるしくみになっているようです。
300 スレッドまでは接続、レコード作成ともに成功しましたが、350を超えるとサーバが高負荷状態となり、接続の失敗が目立つようになっていることがわかります。
マスタマシン 1 台 + ワーカマシン 4 台構成でのテスト
つづいて FileMaker Server を 5 台構成のテスト展開してテストを実行しました。
【サーバ5台構成のイメージ】
本テストはプレビュー(ETS)版(詳細はTechNet)を使用して行いました |
テスト内容と結果は以下のとおりです。
【表2】
No | ワーカ数 | スレッド | ループ | Ramp (秒) |
所要時間(秒) | 失敗数 | 1Recの平均作成時間(秒) | 備考 |
50 | 5 | 10 | 1 | 0.5 | 4.6 | 0 | 0.460 | |
51 | 5 | 20 | 1 | 0.5 | 4.2 | 0 | 0.210 | |
52 | 5 | 50 | 1 | 0.5 | 6.2 | 0 | 0.124 | |
53 | 5 | 100 | 1 | 0.5 | 13.4 | 0 | 0.134 | |
54 | 5 | 100 | 1 | 10 | 11 | 0 | 0.110 | 1回計測 |
55 | 5 | 200 | 1 | 未実施 | ||||
56 | 5 | 300 | 1 | |||||
57 | 5 | 400 | 1 | |||||
58 | 5 | 500 | 1 | 0.5 | 46 | 128 | 0.092 | 1回計測 |
59 | 5 | 500 | 1 | 2 | 58.5 | 1.5 | 0.117 | 2回計測 |
60 | 5 | 500 | 1 | 5 | 60 | 0 | 0.120 | 1回計測 |
61 | 5 | 500 | 1 | 7 | 49 | 0 | 0.098 | 1回計測 |
62 | 5 | 500 | 1 | 10 | 63 | 0 | 0.126 | 1回計測 |
63 | 5 | 500 | 1 | 30 | 48 | 0 | 0.096 | 1回計測 |
64 | 5 | 500 | 1 | 40 | 48 | 0 | 0.096 | 1回計測 |
65 | 5 | 500 | 1 | 7 | 54 | 0 | 0.108 | |
66 | 5 | 600 | 1 | 40 | 59 | 0 | 0.098 | 1回計測 |
67 | 5 | 1000 | 1 | 55 | 98 | 130 | 0.098 | 1回計測 |
イタリック(斜体)部分は1回または2回のみテストを実施
考察
以下、今回行ったテストからの考察となります。
高い処理能力
表1 のテストNo.6 は、1台構成(マスタのみ)環境下で、0.5 秒間に 300 スレッドからクエリを発行し、エラーを出すことなく、23 秒の間に 300 の出庫伝票の作成に成功しています。中規模程度の環境であれば、パフォーマンス的に WebDirect 16 は Webアプリケーション構築の選択肢になると思われます。
適切なワーカマシン数
表1のテストNo.6 と表2 のテストNo.53 を見てください。他の条件は同じで、ワーカ数が 1 から 5 に増えているにもかかわらず、所要時間はマスタ 1 台の構成のほうが速くなっています。このテストに関しては、おそらくマスタがロードバランスに費やすオーバーヘッドが高いため、ロードバランスを行わない 1 台構成が有利になるものと思われます。
本テストは短い時間に多くのスレッドから1回のみリクエストを発行するというもので、すべての運用環境に適用できるものではありませんが、単純にワーカマシンを増やせば実行速度が上がるわけではないという可能性を示しています。幸い、ワーカマシンの増設は簡単に行えるので、業務状況やユーザの意見を参考に、ワーカマシンを適時増設していくことも可能と思います。
本テストは短い時間に多くのスレッドから1回のみリクエストを発行するというもので、すべての運用環境に適用できるものではありませんが、単純にワーカマシンを増やせば実行速度が上がるわけではないという可能性を示しています。幸い、ワーカマシンの増設は簡単に行えるので、業務状況やユーザの意見を参考に、ワーカマシンを適時増設していくことも可能と思います。
ワーカマシンの接続On/Offについて
ワーカマシンの接続On/Offは、FileMaker Server 16 の Admin Console ページで簡単に行えます。
下図は、ワーカマシン 2 および 3 の接続を停止したときの様子です。
WebDirect ワーカマシン 2 および 3 の接続を停止したときの様子 |
ワーカマシン 2~5 は接続をOn/Offすることのほかに、ゴミ箱アイコンをクリックすることにより、マスタマシンとの接続設定を消去することもできます。
これに対し、ワーカマシン 1 はマスタサーバ兼用のため、WebDirect ワーカマシンとしての接続停止はできますが、削除はできないようになっています。
短い時間内で大量のクエリが実行された場合のエラー
上表で赤字の部分は出庫伝票の作成に失敗した件数を示しています。短い時間に多くのクエリが発行されると、エラーが発生しやすくなります。下図は高負荷状態の時に商品画面にアクセスしたのですが、フィールドに < File Missing > が表示されるエラーが発生しました。
また、サーバが高負荷状態になると、Admin Console が以下のように無応答状態になることがあります。
さらにアクセスが集中すると、Web サーバ上側でエラー 503 (Service Temporarily Unavailable) が発生し、接続を受け付けなくなることもあります。
よって、WebDirect の運用を始める前に、最大接続ユーザ数の見積やピーク時の負荷を想定してのテストはやっておくに越したことはありませんね!
ロードバランス
記事が長くなってまいりましたので、WebDirect 16 のロードバランスについては、別稿を設けたいと思います。
アプリケーションを高速に開発できる FileMaker。 WebDirect 16 の登場によって Web上の500 ユーザがブラウザから同時接続できるようになりました。 WebDirect は Webアプリケーションの開発において、新たな選択肢を提供する段階に入ったように思います。
土屋企画では WebDirect の受託開発及び導入支援コンサルティングを請けたまわっております。 WebDirect の導入を検討されているお客様は、こちらよりご相談いただければと思います。
(亀)