現在、ulimit -n
は10000
を示しています。 40000
に増やしたい。 「/etc/sysctl.conf」を編集し、fs.file-max=40000
を追加しました。 /etc/security/limits.conf
も編集し、ハード値とソフト値を更新しました。ただし、ulimitには10000
と表示されます。これらすべての変更を行った後、ラップトップを再起動しました。ルートパスワードにアクセスしました。
usr_name@usr_name-lap:/etc$ /sbin/sysctl fs.file-max
fs.file-max = 500000
/etc/security/limits.conf
に次の行を追加しました-
* soft nofile 40000
* hard nofile 40000
/etc/pam.d/su
-に次の行も追加しました
session required pam_limits.so
私は他のフォーラムで与えられたあらゆる可能な方法を試しましたが、10000
の最大制限まで到達できますが、それを超えません。問題は何ですか?
neo4j
が最大オープンファイル制限のエラーをスローするため、この変更を行っています。
私はDebianを使用していますが、この解決策はUbuntuでも問題なく動作します。
neo4j-serviceスクリプトに1行追加する必要があります。
これが私がしたことです。
nano /etc/init.d/neo4j-service
start-stop-daemon行の直前に"ulimit –n 40000"を追加します。do_startセクション
私はバージョン2.0エンタープライズ版を使用していることに注意してください。これがお役に立てば幸いです。
あなたがしていることはrootユーザーのために働かないでしょう。たぶんあなたはあなたのサービスをrootとして実行しているので、あなたはその変更を見ることができません。
Rootユーザーのulimitを増やすには、*
をrootに置き換える必要があります。 *
はrootユーザーには適用されません。休息はあなたがしたのと同じです。ここで再度引用します。
ファイルに次の行を追加します。/etc/security/limits.conf
root soft nofile 40000
root hard nofile 40000
その後、ファイルに次の行を追加します。/etc/pam.d/common-session
session required pam_limits.so
これにより、rootユーザーのulimitが更新されます。コメントで述べたように、変更を確認するために再起動する必要すらないかもしれません。
1)sysctl file-max
の制限を確認します。
$ cat /proc/sys/fs/file-max
制限が目的の値より低い場合は、sysctl.conf
を開き、ファイルの末尾に次の行を追加します。
fs.file-max = 65536
最後に、sysctl
制限を適用します。
$ sysctl -p
2)/etc/security/limits.conf
を編集して上記の下に追加
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
これらの制限はroot
ユーザーには適用されません。root
制限を変更する場合は、明示的に変更する必要があります。
root soft nofile 65535
root hard nofile 65535
...
3)システムを再起動するか、/etc/pam.d/common-session
の最後に次の行を追加します。
session required pam_limits.so
ログアウトして再度ログインしてください。
4)ソフトリミットを確認します。
$ ulimit -a
そして厳しい制限:
$ ulimit -Ha
....
open files (-n) 65535
参照: http://ithubinfo.blogspot.in/2013/07/how-to-increase-ulimit-open-file-and.html
私は同じ問題を抱えており、/etc/security/limits.d/90-somefile.conf
にエントリを追加することでそれを機能させることができました。制限が機能していることを確認するには、sshセッションから完全にログアウトしてからログインし直す必要がありました。
サービスを実行している特定のユーザーに対して制限を設定したいのですが、ログインしているユーザーに対して設定されている制限を取得しているようです。以下は、有効ユーザーではなく、認証済みユーザーに基づいてulimitがどのように設定されるかを示す例です。
$ Sudo cat /etc/security/limits.d/90-nofiles.conf
loginuser soft nofile 10240
loginuser hard nofile 10240
root soft nofile 10241
root hard nofile 10241
serviceuser soft nofile 10242
serviceuser hard nofile 10242
$ whoami
loginuser
$ ulimit -n
10240
$ Sudo -i
# ulimit -n
10240 # loginuser's limit
# su - serviceuser
$ ulimit -n
10240 # still loginuser's limit.
*
を使用してすべてのユーザーの増加を指定できます。ログインしたユーザーとしてサービスを再起動し、initスクリプトにulimit -n
を追加すると、最初のログインユーザーの制限が設定されていることがわかります。システム起動時にどのユーザーの制限が使用されているのかを確認したり、実行中のサービス(実際にはstart-stop-daemonで開始されているもの)の実際のnofile制限を判断することはできません。
現在有効なアプローチは2つあります。
これを機能させるのに苦労します。
以下を使用すると、あなたのユーザの許可に関係なくそれを更新することができます。
Sudo sysctl -w fs.inotify.max_user_watches=100000
編集
これは他のstackExchangeサイトの他のユーザからも見たことがあります(どちらも動作しますが、このバージョン恒久的には一時的ではなくシステム設定を更新します):
echo fs.inotify.max_user_watches=100000 | Sudo tee -a /etc/sysctl.conf;
Sudo sysctl -p
tl; drソフトとハードの両方の制限を設定
意図したとおりに機能していると確信していますが、念のためここで追加します。完全を期すために、ここで制限を設定します(構文については以下を参照)。/etc/security/limits.conf
some_user soft nofile 60000
some_user hard nofile 60000
/etc/pam.d/common-sessionの以下のようにして有効にします。
session required pam_limits.so
ハードリミットだけを設定した場合、ulimit -a
はデフォルト(1024)を表示します。ソフトリミットのみを設定した場合、ulimit -aは(4096)を表示します。
これらを設定した場合、両方のulimit -a
はソフトリミットを表示します(もちろんハードリミットまで)
私はこうやった
echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/
neo4j
を実行する前に、ulimit -n 40000
のinitスクリプトを変更してneo4j
を実行することができます。
しかし、私はあなたが間違った木を吠えていると感じるしかないのです。 neo4j
は合法的に10,000以上のオープンファイル記述子を必要としますか?これはneo4j
のバグ、あるいはあなたが使っている方法のようです。私はそれに対処しようとします。
このコマンドを実行してみてください。*_limits.conf
の下に/etc/security/limits.d
ファイルが作成されます。
echo "* soft nofile 102400" > /etc/security/limits.d/*_limits.conf && echo "* hard nofile 102400" >> /etc/security/limits.d/*_limits.conf
端末から出て再度ログインし、* usersに設定されるulimit -n
で確認するだけです。
ULIMIT構成:
下に記入
website soft nofile 8192
website hard nofile 8192
website soft nproc 4096
website hard nproc 8192
website soft core unlimited
website hard core unlimited
ALL USERの下にエントリを作る
* soft nofile 8192
* hard nofile 8192
* soft nproc 4096
* hard nproc 8192
* soft core unlimited
* hard core unlimited
ファイルを変更した後、ユーザーはログオフしてから再度ログインして新しい値を確認する必要があります。