![]() |
Linux 版ドミノのパフォーマンス
ドミノのベンチマークや処理能力は、ハードウェアとドミノ サーバーの元で起動するオペレーションシステムのプロセスによって影響を受けます。この文書は、Linux 上で起動するドミノで発生する既知の制限、そして、これらの制限に作用する Linux システムレベルの設定を記述します。R5.0.2 で、Linux プラットフォームでのドミノサーバーの処理能力は、調査中です。Linux での能力やパフォーマンスについての追加情報は現在作成中で、ロータス フォーラムよりリリースされる予定です。
Linux のサービス
ほとんどの Linux ディストリビューションは、デフォルトで次のサービスが有効になっています:NNTP、SMTP、IMAP、POP3、HTTP。ドミノ サーバーが提供するこれらのサービスを利用するためには、競合する Linux サービスを無効にする必要があります。IMAP や POP3 では、/etc/inetd.conf ファイルを編集することによって、簡単に作業できます。ファイル中の、POP3 と IMAP のエントリをコメントアウトします。SMTP、NNTP、HTTP を無効にするためには、各 Linux ディストリビューションで与えられているユーティリティを使う必要があります。
同時起動するタスクの制限
Linux 2.2.5 カーネルの制限により、ドミノ サーバーは約 200 以上のタスクを同時に実行することはできません。タスクを大まかに定義すると、以下のようになります(ユーザー接続となるセッションも含みます)。
カーネルの再構築についての重要なメモ
カーネルをリビルドし、これらの制限を拡張することも可能です。実際に Red Hat 6.1 カーネルでは拡張されています。初期のテストの結果、ドミノは、Red Hat6.1 のような処理能力の高い環境で実行するべきです。
以下の理由により Linux の制限を変更する場合には注意が必要です。
ファイルディスクリプタ
Linux 2.2.5 カーネルでは、1 ユーザーがオープンできるファイルディスクリプタの最大数はデフォルトで 1024 に設定されています。また、システムの制限により、オープンされているファイルディスクリプタの合計数は約 3000 が上限となります。Red Hat 6.1 では、ユーザー制限のデフォルトは同じですが、ワークアラウンドとしてこの数値を増加させるためのコードが含まれています。 root ユーザーとして /proc/sys/fs/file-max と /proc/sys/fs/inode-max に大きな値をエコーすることにより (ただし、含まれている値の 3 倍まで)、実行中のカーネルで上限の値を増加させることができます。
例:
$ echo "16384" > /proc/sys/fs/file-max
$ echo "55296" > /proc/sys/fs/inode-max
たとえば、file-max の値を 16k にして、inode-max の値を 54k にすると、16k までのファイルディスクリプタをオープンできるようにシステムの上限が拡張されます。これによって、実行中のカーネルのメモリ消費量が増えることに注意してください。拡張した上限を利用するには、ユーザーあたりの上限を増加して、ファイルディスクリプタを使えるようにしなければなりません。これを行う 1 つの方法として、root ユーザーとして ulimit コマンドを使ってユーザーの上限を増加させ、ドミノ サーバーの所有権、実行権を持つユーザー ID に su します。
例:
$ su
# ulimit -n 8192
# su - notesadmin
$ cd /my/notes/data/directory
$ /opt/lotus/bin/server
これは、ユーザーがオープンできるファイルディスクリプタの上限を、8k に増加します。(この数値は、上で定義されたシステム拡張制限より小さくする必要があります。)
スレッド/プロセス
各スレッドは Linux の light-weight-process (LWP) なので、ノーマルプロセスと同様に、実行されるプロセスの最大数が限定されています。つまり、200 スレッドによるプロセスと 56 プロセスで、1 ユーザー当たり合計 256 プロセスになります。これは、2.2.5 カーネルでの標準の制限である 1 ユーザー当たり 256 プロセスに一致します。Red Hat 6.1 ディストリビューションでは、この上限が 1 ユーザー当たり 2000 プロセス、システム全体で 3000 プロセスに拡張されています。
例
大まかにいうと、サーバーの各ユーザーは、約 3 個のファイルディスクリプタを使い、実行する各タスクごとに 1 つのプロセスを生成します。たとえば、メールファイルにアクセスするユーザーは dbserver の 1 スレッドになり、ネットワークコネクション用に 1 つ、アドレス帳へのアクセスに 1 つ、メールファイルへのアクセスに 1 つの合計 3 つのファイルディスクリプタを使います。必要に応じてタスクは大きく異なるため、これらの値を正確に見積もるのは非常に困難です。
例として、http 経由でドミノ サーバーにアクセスするユーザーを考えてみましょう。ブラウザによって生成された各リクエストごとに、ユーザーは、ネットワークファイルディスクリプタ、リクエスト用のスレッド、リクエストされるアイテム用のファイルディスクリプタを使用し、さらに認証用に複数のファイルディスクリプタが必要です。ブラウザが複数の同時リクエストをサポートする場合は、1 人のユーザーがかなり多くのリクエスト (4 つの同時リクエストの場合、4 スレッドと 12 以上のファイルディスクリプタ) を使うことになります。このことを理解した上で、1 人のユーザーが 3 つのファイルディスクリプタと タスクごとに 1 つのスレッドを使うものと仮定して、ドミノサーバーがどれだけの人数のユーザーを処理できるかを考慮してみます。たとえば、16k のファイルディスクリプタと 2000 スレッドでは、スレッドの数が制限となり、サーバーは 2000 スレッドを使う約 2000 のタスクと 6000 ファイルディスクリプタをサポートできることになります。しかし、ドミノサーバーを実行するユーザーのシェルやユーザーが実行しているその他のプロセス (X、kvt、kdwm など) も考慮すると、その分のリソースが必要となり、タスクの数はこれよりも減少します。
-------------------------------------------------------------------------------------------------------------------------------------------
Web に接続している場合は 、 ここをクリックするとこの文書についてのコメントをロータスに送信できます。