2017-03-09 3 views
1

質問が愚かな場合は心からお詫び申し上げますが、私は初心者です(フロントエンドの開発者、最近はバックエンドで作業中)。設定の高いAwSマシンで開いているファイルが多すぎます

私はAmazonのawsマシンで実行しているアプリを持っています。私が望むのは、私のリソースを効率的に活用して、より多くのリクエストが提供されるようにすることです。

GETとWebSocketリクエストを処理するJavaのvertxサーバを実行しています。私は別のポート上で実行しているこのサーバの3つのインスタンスを作成し、nginxを使用して負荷を分散しました。

私のAWSリソースはかなり

lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 
xvda 202:0 0 100G 0 disk 
└─xvda1 202:1 0 100G 0 part/

私のソフトリミットは無制限

ulimit -S 
unlimited 

私のハードリミットは無制限

ulimit -H 
unlimited 

私は開かれたファイルの合計数をチェックしていますですですas

私はulimit -aをするための最良の方法は何

core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 128305 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 700000 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 8192 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 128305 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 

ある

開いているファイルが多すぎ:

sudo lsof -Fn -u root| wc -l 
13397 

は、なぜ私はこの例外に

にjava.io.IOExceptionを取得しています使用可能なファイルの数と使用されているファイルの数を確認してください。そして、私はどのように多くの接続を行うことができるような方法でリソースを使うべきですか?

お知らせください。

+0

あなたはの出力を投稿することができます: '猫の/ proc/sysのの/ fsの/ファイルmax'と' ulimitの-a' – Behe

+0

猫の/ proc/sysのの/ fsの/ファイル-maxが300000 – CuriousMind

+0

です@ Beheをチェックしてください、私は質問を編集しました。 – CuriousMind

答えて

1

ハードリミットとソフトリミットが正しく設定されていると仮定しています。しかし、頂点があなたが設定した完全なulimitsを利用することができないので、このエラーが発生しています。

チェック上限が何であるかを、あなたのVERTXサーバがで使用することができます。

猫の/ proc/PID /制限

Max open files 700000  700000 files 

はあなたを伝えるラインです。

ソフトリミットを高く設定してもこの値が低い場合、ソフトリミットを変更している(initファイルのような)アプリに何かがあります。

initスクリプトを見つけてそこのソフトリミットを変更するだけです。あなたの問題を解決します。

https://underyx.me/2015/05/18/raising-the-maximum-number-of-file-descriptors

0

私は間違った制限を確認すると思います。 man ulimit

から

オプションが与えられなかった場合は、その後、 -fが想定されます。

これはulimit -Sulimit -S -f同じ戻り、各ulimit -Hulimit -H -fを意味します。

オプション-fは例外java.io.IOException: Too many open files言及too many open files

The maximum size of files written by the shell and its children 

を意味します。したがって、The maximum number of open file descriptorsを確認する必要があります。(ほとんどのシステムでは、この値を設定することはできません)オープンファイル記述子の最大数-nオプション-n

ための7 man ulimit言及CentOSの一部で

# as root 
$ ulimit -S -n 
1024 
$ ulimit -S -n 2048 
2048 

システムを変更することができない場合があります。

+0

私が言ったように、ソフトリミットはまだ「無制限」で、ハードリミットは700000です。 – CuriousMind

+0

@CuriousMind申し訳ありません。私は自分の投稿に誤字がありました。それは 'ulimit -S'の代わりに' ulimit -S -n'でなければなりませんでした。これが、あなたが「無制限」を得た理由です(すでに述べたように、書かれたファイルの最大サイズ用です)。ハードリミットではソフトリミットを大きくすることはできません。しかし、なぜあなたのアプリケーションは700.000以上のオープンファイルを同時に必要としますか? – SubOptimal

+0

ulimit -S -nは700000です。私のアプリケーションは多数のリクエストを受け取ります。そして、私はたくさんの "たくさんのファイル"が開かれているという例外があります。 – CuriousMind

関連する問題