はじめに
前回まではOSでのパフォーマンス情報の項目と取得方法を説明してきました。今回はその項目に関しての具体的なチューニングポイントを説明します。
カーネルパラメータの変更方法
Linuxのチューニングの際には「第2回:Linuxの設定情報を取得する」で説明したカーネル内部のパラメータの変更をする機会が多くあります。はじめにカーネルパラメータの変更方法を説明します。カーネルパラメータの変更にはいくつかの方法があります。
「/proc/sys」ディレクトリ以下に直接値を設定
カーネルパラメータは「/proc/sys」ディレクトリ以下に設定されています。各項目に直接値を入れることで動的に変更することが可能です。
# echo 512 > /proc/sys/kernel/msgmni |
「sysctl」コマンドを利用して設定
カーネルパラメータを確認する際に使用した「sysctl」コマンドを使って設定することもできます。
# sysctl -w kernel.msgmni=512 |
この2種類の方法は一時的な変更だけで、OSを再起動すると設定した値が元に戻ってしまいます。再起動しても常に設定値を反映させるには以下の方法で設定します。
「/etc/sysctl.conf」ファイルに設定
「/etc/sysctl.conf」はカーネルパラメータを記述する設定ファイルです。このファイルにパラメータを追加し「sysctl -p」を実行するとファイルが読み込まれ値が設定されます。OS起動時には「/etc/rc.sysinit」の処理中に「sysctl -p」が実行されますので、再起動をしても同じ値が設定されることになります。
# vi /etc/sysctl.conf |
以降の説明では、「/etc/sysctl.conf」に記述することを前提にパラメータ名を示します。
プロセスとファイルディスクリプタ
システム全体で利用可能なプロセス数とファイルディスクリプタの上限値は、カーネルパラメータで指定しまが、標準でも比較的大きな値となっていますので、この上限にすぐに達することはあまりありません。もし、変更するには以下のパラメータの値を変更します。
| パラメータ | 設定例 | 説明 |
|---|---|---|
| kernel.threads-max | 8190 | システム全体のプロセス数の上限 |
| fs.file-max | 25172 | システム全体のファイルディスクリプタの上限 |
1ユーザが実行できるプロセス数とオープンできるファイルディスクリプタの上限は標準では1024となっています(「ulimit」コマンドで確認)。
「これ以上プロセス(スレッド)が作成できない」「オープンできるファイル数の上限に達した」という意味のメッセージがシステムログやアプリケー ションのログファイルに表示される場合は、上限値に達している可能性が高いです。ユーザあたりの上限値を確認してください。
ユーザあたりの上限はカーネルパラメータでは変更できません。一時的な変更であれば設定を確認するためにも使用する「ulimit」コマンドで可能 ですが、設定値をログイン時に常に有効にするためには、以下の手順に従って「/etc/security/limits.conf」に設定を行います。
「ユーザ:user1」の上限を変更する例
「/etc/security/limits.conf」にユーザ名と上限値を記述します。 |