web-dev-qa-db-ja.com

UbuntuでNeo4jの最大ファイルオープン制限(ulimit)を増やす方法は?

現在、ulimit -n10000を示しています。 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が最大オープンファイル制限のエラーをスローするため、この変更を行っています。

76
theharshest

私はDebianを使用していますが、この解決策はUbuntuでも問題なく動作します。
neo4j-serviceスクリプトに1行追加する必要があります。
これが私がしたことです。

nano /etc/init.d/neo4j-service
start-stop-daemon行の直前に"ulimit –n 40000"を追加します。do_startセクション

私はバージョン2.0エンタープライズ版を使用していることに注意してください。これがお役に立てば幸いです。

8

あなたがしていることは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が更新されます。コメントで述べたように、変更を確認するために再起動する必要すらないかもしれません。

82
Sambhav Sharma

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

63
minhas23

私は同じ問題を抱えており、/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つあります。

  1. start-stop-daemonの直前に、initスクリプトにulimit調整を追加してください。
  2. セキュリティファイル内のワイルドカードまたはより広範なulimit設定。
3
Brett

これを機能させるのに苦労します。

以下を使用すると、あなたのユーザの許可に関係なくそれを更新することができます。

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
2
Layke

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はソフトリミットを表示します(もちろんハードリミットまで)

2
jorfus

私はこうやった

echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/
2
bigkahunaburger

neo4jを実行する前に、ulimit -n 40000のinitスクリプトを変更してneo4jを実行することができます。

しかし、私はあなたが間違った木を吠えていると感じるしかないのです。 neo4jは合法的に10,000以上のオープンファイル記述子を必要としますか?これはneo4jのバグ、あるいはあなたが使っている方法のようです。私はそれに対処しようとします。

2
abligh

このコマンドを実行してみてください。*_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で確認するだけです。

2
Mahattam

ULIMIT構成:

  1. Rootでログイン
  2. vi security/limits.conf
  3. 下に記入

    の制限のない設定の開始 ウェブサイト ユーザー

    website   soft   nofile    8192
    website   hard   nofile    8192
    website   soft   nproc    4096
    website   hard   nproc    8192
    website   soft   core    unlimited
    website   hard   core    unlimited
    
  4. ALL USERの下にエントリを作る

    すべてのユーザーのための無制限の設定

    *   soft   nofile    8192
    *   hard   nofile    8192
    *   soft   nproc    4096
    *   hard   nproc    8192
    *   soft   core    unlimited
    *   hard   core    unlimited
    
  5. ファイルを変更した後、ユーザーはログオフしてから再度ログインして新しい値を確認する必要があります。

1