TB/TB-2007-05-WEBCONF

出典: ScalixWikiJP

Scalix Wiki -> TB -> TB/TB-2007-05-WEBCONF

このページはScalix Wiki - TB/TB-2007-05-WEBCONF (米国サイト)の翻訳です。

目次

大規模環境におけるScalix Web Accessの設定とチューニング

Scalix 11がインストールされると、Scalixのウェブアプリケーションは中小規模のマシンでの利用に最適化された設定を自動的に行っています。 従って、デフォルトの設定は(500ユーザまでの)中小規模での導入に対して適応できます。 大規模の場合は、Scalixはウェブアプリケーションを実行しているTomcatサーバの設定とチューニングを見直して、必要に応じて調整することを推奨しています。 以下に述べるような、オープンできるファイルハンドル数の制限、Java仮想マシンのメモリ、Tomcatのスレッドプールサイズの手引きがあります。

オープンできるファイルハンド数の制限

Linuxは一つのプロセスが開くことのできるファイルハンドルの数を制限しています。 Scalix Web Accessはユーザがログインするたびに2〜4個のファイルハンドルを使用します。 起動スクリプト(/etc/init.d/scalix-tomcat)はデフォルトのオペレーティングシステムのファイルハンドル制限(たいていは1000)を上書きします。 Tomcatに適応できる制限はファイル/etc/opt/scalix-tomcat/scalix-tomcat.confから取得します。 それのデフォルト値は2000ユーザが同時ログインするのに十分な10000になっています。

備考

Scalix 11.0.3より前のバージョンではオペレーティングシステムのデフォルト値を上書きしません。 そのため、手動で設定しなければ、ファイル記述子の制限が1000に強制されます。 また、Scalix 11.0.4より前のバージョンでは、サーバが長時間起動しているときに、検索サーバが比較的少ないユーザ数でさえファイル記述子の制限に達してしまうため、ファイル記述子が不足してしまいました。 ファイル記述子の制限を超えると、ユーザが新しくログインできないといった症状が生じます。 ウェブアプリケーションのログファイルにファイルのオープンを試みて失敗したことに関するエラーを見つけることができます。

Java仮想マシンのメモリ制限

Tomcatが起動しているJava仮想マシン(VM)ではメモリ使用量の制限をつけた設定を行われています。 デフォルトの制限値はシステムの物理メモリの4分の1です。ただし、最小64Mバイト、最大1Gバイトの範囲です。 その制限値はインストール時に設定されます。そのため、物理メモリを後から追加したときには設定値は変更しません。 制限値はScalixインストーラ(Scalix Tomcat\Tomcat Configuration\Reserve memory for Tomcat)により設定されます。 Scalixウェブアプリケーションはユーザのログイン数に関わらずおおよそ50Mバイトの基礎となるメモリを使います。 さらに、ユーザがログインする毎に1ユーザあたり約5Mバイトの追加のメモリを使用します。 200ユーザ以上の同時ログインをサポートする必要のあるシステムでは制限値を増やすべきでしょう。 最大値は32ビットシステムでは2Gバイトです。 64ビットシステムではTomcatにもっと多くのメモリを割り当て、ページングをさけるために十分な物理メモリを提供することができます。

Tomcatスレッドプールサイズ

多くの最近のアプリケーションサーバのように、Apache Tomcatはスレッド生成のオーバーヘッドを避けるためにスレッドプールを使います。 各クライアントのリクエストはプールから取ってきたスレッドによりサービスを受けます。 リクエストが完了すると、そのスレッドは引き続き生じるリクエストで再利用できるようにプールに返されます。 Scalix Web Accessはユーザがログインする毎に一つのスレッドを使います。 Tomcatのスレッドプールは最大サイズを設定できます。デフォルトのサイズは200です。 Scalix 11.0.4以降ではデフォルトのサイズはファイル/var/opt/scalix/<inst>/tomcat/conf/server.xmlで上書きできます。 設定できる最大サイズは1000スレッドです。これは32ビットシステムで安全に許容されるスレッドの最大値です。 各スレッドが2Mバイトのスタック空間を割り当てられるため、より大きな値を設定すると仮想メモリのアドレス空間を使い果たしてしまう危険性があります。 (1000 x 2は2Gよりわずかに小さいです。これは32ビットシステムでユーザプロセスで利用できる仮想アドレス空間です)。 64ビットマシンではScalixは64ビットのJava仮想マシンを使います。 そのため、サーバ毎に500ユーザ以上の同時ログイン数をサポートする必要があるサーバは64ビットハードウェアを使い、もっと大きなスレッドプールを許可するように手動設定するべきです。

スレッドプールが枯渇すると、ユーザがログインできなかったり、ユーザの操作がタイムアウトしたりする症状が出ます。

手動で設定するためには、server.xmlファイルで'maxThreads'ディレクティブを含んだ行を次のように変更します。

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009"
               address="server.doma.ain"
               maxThreads="500" minSpareThreads="50" maxSpareThreads="125"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
               URIEncoding="UTF-8" />