ウェブサイト検索

Linuxでオープンファイルの制限を増やす方法


Linuxでは、開いているファイルの最大数を変更できます。この数はulimitコマンドを使用して変更できます。これにより、シェルまたはそれによって開始されたプロセスで使用可能なリソースを制御する能力が与えられます。

関連情報:ユーザーごとのレベルでLinuxの実行プロセスの制限を設定する

この短いチュートリアルでは、現在のオープンファイルおよびファイル記述子の制限を確認する方法を示しますが、そのためにはシステムへのルートアクセスが必要です。

まず、Linuxシステムで開いているファイルディスクリプタの最大数をどのように確認できるか見てみましょう。

Linuxのオープンファイル制限を見つける

値は次の場所に保存されています:

# cat /proc/sys/fs/file-max

818354

表示される数値は、ユーザーが1回のログインセッションで開くことができるファイルの数を示しています。その結果は、あなたのシステムによって異なる場合があります。

例えば、私のCentOSサーバーでは、制限が818354に設定されていましたが、家で運営しているUbuntuサーバーでは、デフォルトの制限が176772に設定されていました。

ハードリミットとソフトリミットを確認したい場合は、以下のコマンドを使用できます:

Linuxでハードリミットを確認する

# ulimit -Hn

4096

Linuxでソフトリミットを確認する

# ulimit -Sn

1024

異なるユーザーのハードとソフトの値を見るには、単に“su”を使って、確認したい制限のあるユーザーに切り替えることができます。

例えば:

# su marin
ulimit -Sn

1024
$ ulimit -Hn

4096

Linuxでシステム全体のファイル記述子制限を確認する方法

サーバーを運営している場合、いくつかのアプリケーションはオープンファイルディスクリプタの制限を引き上げる必要があるかもしれません。その良い例としては、MySQL/MariaDB サービスや Apache ウェブサーバーがあります。

Linuxでは、カーネルディレクティブfs.file-maxを編集することで、開くファイルの制限を増やすことができます。そのためには、sysctlユーティリティを使用できます。

Sysctl は、ランタイムでカーネルパラメータを設定するために使用されます。

例えば、オープンファイルの制限を500000に増やすには、以下のコマンドをルートとして使用できます:

# sysctl -w fs.file-max=500000

開いているファイルの現在の値を確認するには、次のコマンドを使用できます。

$ cat /proc/sys/fs/file-max

上記のコマンドを使用すると、あなたが行った変更は次回の再起動までのみ有効になります。これらを永続的に適用したい場合は、次のファイルを編集する必要があります:

# vi /etc/sysctl.conf

次の行を追加してください:

fs.file-max=500000

もちろん、必要に応じて数を変更できます。変更を再確認するには、次を使用してください:

# cat /proc/sys/fs/file-max

ユーザーは変更を有効にするために再ログアウトし、再ログインする必要があります。制限を即座に適用したい場合は、次のコマンドを使用できます:

# sysctl -p

Linuxでユーザーレベルのオープンファイル制限を設定する

上記の例では、グローバルな制限を設定する方法を示しましたが、ユーザーごとに制限を適用したい場合があります。そのためには、ユーザーrootとして、以下のファイルを編集する必要があります:

# vi /etc/security/limits.conf

Linux管理者であれば、そのファイルとそれに対して何ができるかをよく理解することをお勧めします。その中のすべてのコメントを読みなさい。コメントは、ユーザーやグループを異なるレベルで制限することによってシステムリソースの管理において大きな柔軟性を提供します。

追加すべき行には次のパラメータが必要です:

<domain>        <type>  <item>  <value>

ユーザーマリンのためのソフトリミットとハードリミットを設定する例は以下の通りです:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

最後の考え

この記事では、開いているファイルの最大数に関するグローバルおよびユーザーレベルの制限を確認および構成する基本的な例を示しました。

私たちは表面を少ししか触れていませんが、/etc/sysctl.conf と /etc/security/limits.conf について詳細に調べて学ぶことを強くお勧めします。これらはいつかあなたに大いに役立つでしょう。

関連記事: