New-Village

月間ブログ。だいたい1カ月に1回は更新しているようです。

事前設定で変更するlimit.confって何だ?

仕事でお客様にfluentdを導入しているのですが、fluentdのインストール手順「Fluentdインストールの前に」に「ファイルディスクリプタの最大値を増やす」という項目があります。マシンの再起動が必要になるので、できればやりたくない作業です。

インストールガイドで再起動してくださいと書いてあるので、省略できないとは思うのですが、せめて何故再起動しなければならないのか、くらいは理解しておきたいと思い、調べてみました。

 

■ limits.confの解説

以下、ITmediaエンタープライズLinux Tips 「ユーザーごとに使用できるリソース制限をしたい」より引用。

大勢のユーザーを抱えるサーバでは、システムリソースが1ユーザーによって占有されないよう管理する必要がある。PAMを利用すると、ユーザーごと、グループごとの制限をすることが可能だ。

# vi /etc/security/limits.conf

* soft nofile 1024
* hard nofile 49152
* - maxlogin 3

上記の例は1行目で、すべてのユーザー「*」にソフトリミット「soft」、で読み込める最大ファイル数「nofile」を1024、最大限度「hard」では読み込める最大ファイル数「nofile」を49152ファイルに制限を意味する。

 

■ ファイルディスクリプタ

OSがファイルを制御する際に割り当てられるint型の値が、ファイルディスクリプタ らしいです。プロセスがファイルを操作する際に、どのプロセスがどのファイルを利用するのかという定義をする際に、ファイルディスクリプタの番号を利用しているとのことです。

で、fluentdでは、絶えずログファイルにアクセスを行うので、後続処理が遅延するなどして、ファイルオープンの状態が増えた際にも対応できるように、ファイルディスクリプタの上限を増やしておく必要がある…と、そういう話みたいですね。