サーバプログラムを起動する/停止する

fusion_place のサーバプログラムは、インストール先のコンピュータの起動およびシャットダウンに伴い、自動的に起動および停止するように、初期設定されています。そのため、ユーザは、 fusion_place の使用開始/終了に際して、サーバを起動/停止する必要はありません。意図してサーバを停止する必要があるのは、データベースをバックアップする時などです。

また、fusion_place が用いているH2 データベースエンジンは、1 日 24 時間・1 年 365 日連続稼働を前提とした、いわゆる「高可用性」データベースエンジンではありません。Web サーバベースで運用されている場合、サーバ機は電源を落とさず稼働させ続けることもあると思いますが、上記の観点からも、時折、サーバプログラムを停止/再起動することをお勧めします(定期的にバックアップを取得する運用とすれば、その都度、サーバプログラムを停止/再起動することにもなります)。停止/再起動を自動化する手段としてコマンドラインから fusion_place サーバを停止する方法もご説明します。

手動でサーバプログラムを起動/停止する

サーバを起動または停止するには、Windows のスタートメニューからサーバ管理ツールを起動します。

スタートメニューから 以下の項目(プログラム)を選択してください。

すべてのプログラム  fusion_place premium(又は standard)n.n…  サーバ管理  s1.fusion_place サーバ設定

⇒ 「fusion_place server Properties」ダイアログボックスが表示されます(エラーメッセージが表示される場合には、「サーバ管理ツールを起動できない場合の対処」をご覧ください)。

server prpperties dialog general

サーバプログラムを起動する

上記のパネルで Start ボタンをクリックします(サーバプログラムがすでに起動されているときには、クリックできません)。

サーバプログラムを停止する

上記のパネルで Stop ボタンをクリックします(サーバプログラムが停止しているときには、クリックできません)。

コマンドラインからサーバプログラムを起動/停止する

Windows のコマンドラインプログラム「sc」を用いて、コマンドラインから、fusion_place サーバを起動/停止することもできます。この機能を用いれば、サーバの停止と再起動を自動化することも可能です(コマンドの自動実行には、Windows のタスクマネージャ等を用いることができます)。

サーバプログラムを起動する

コマンドラインから以下のように入力します。

sc start FusionPlace

サーバプログラムを停止する

コマンドラインから以下のように入力します。

sc stop FusionPlace

サーバプログラムを安全に停止するために

fusion_place 7.0 で、サーバプログラムおよびデータベースを停止する際の安全性を高めるために、サーバプログラムの停止処理が改善されました。

サーバプログラム停止の流れ

以下に Windows 上のサーバプログラムの停止の流れを示します。サーバプログラムの停止には、Windows サービスの管理プログラムである Service Control Manager(SCM)と fusion_place サーバ(Tomcat)プロセスが関わっています。

(1) [SCM] fusion_place プロセスに対して停止するように要求を送信する

(2) [fusion_place] (1) の要求を受信する

(3) [fusion_place] プロセスの安全な停止手続きを開始する

(4) [fusion_place] 管理下のスレッドを停止する(※1)

(5) [fusion_place] データベースを停止する(※2)

(6) [SCM] fusion_place プロセスがタイムアウト時間内(※3)に停止しなければ、強制終了させる

(※1)管理下のスレッドに割り込み、終了を待ちます。割り込まれたスレッドは、安全な停止処理(データベースのロールバック等)を実行し、終了します。最大でスレッドプール終了タイムアウト時間(デフォルト: 5 秒、Tomcat 設定ファイルの環境変数 fusionplace/thread_pool_termination_timeout で変更可能)の倍の時間、正常終了を待機します。

(※2)fusion_place 7.0 以前のバージョンでは、データベース(H2)のシャットダウン処理は、(4) の処理と同時に実行されていました。

(※3)デフォルトは無制限です。ただし、Windows 自体をシャットダウンする際は、この時間に関わらず Windows サービスシステムのタイムアウトにより強制終了される場合があります。
Windows サービスシステムの詳細については https://social.technet.microsoft.com/wiki/contents/articles/12229.windows-system-services-fundamentals.aspx をご覧ください。

サーバプログラムの停止に長い時間がかかる場合の注意事項

サーバプログラム稼働中のデータの流量や入出力の回数が多い場合に、H2 データベースの停止処理に長い時間がかかる場合があります。また、fusion_place のデータ反映処理に時間がかかる場合もあります。サービス管理プログラムのタイムアウト時間や OS のシャットダウン時のタイムアウトにより、これらの処理が途中で終了された場合、データベースのインデックスファイルが壊れる場合があります(※1)。インデックスファイルの破損を回避するために、以下の点に留意してください。

  • SCM のタイムアウト時間を無制限または十分大きくする

  • 「SCM のタイムアウト時間 > スレッドプール終了タイムアウト時間 × 2 + データベース停止時間」となるように調整する

  • OS のシャットダウンの前にサーバプログラムを停止する

(※1)万一、インデックスファイルが破損した場合、サーバプログラムを停止した状態でインデックスファイルを削除してください。次回のサーバプログラム起動後に自動的に再作成されます。インデックスファイルの名称は、「fusionplace.index.db」です。